实施杂项操作?

编纂

会员
已加入
2020年12月4日
留言内容
18
编程经验
1-3
大家好因此,我正在跟踪该视频以使用c#实施crud操作。
我在讨论 这里 我也照他们说的做了!仍然有错误!请帮我!
 

附件

  • 文件格式
    文件格式
    78.3 KB · 观看次数: 4

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,497
地点
弗吉尼亚州切萨皮克
编程经验
10+
听起来更像是SQL配置问题,而不是C#问题。您是否尝试过打开错误提示的设置?
 

编纂

会员
已加入
2020年12月4日
留言内容
18
编程经验
1-3
听起来更像是SQL配置问题,而不是C#问题。您是否尝试过打开错误提示的设置?
最初,同样的错误"仅当使用列列表且IDENTITY_INSERT为ON时,才能为表'Patient_basicinfo'中的identity列指定一个显式值。"发生在SQL Studio中,但后来我使用了 "设置IDENTITY_INSERT Patient_basicinfo的开/关"!这样,查询已在SQL STUDIO上成功执行,但是在Visual Studio中仍然弹出相同的错误。我不知道该怎么做!
错误4.PNG
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,497
地点
弗吉尼亚州切萨皮克
编程经验
10+
您在第2行将其打开,但在最后一行将其关闭。因此,稍后在您运行C#代码时,尝试执行SQL INSERT将设置设置为off的操作,因此您会收到错误消息。
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,497
地点
弗吉尼亚州切萨皮克
编程经验
10+
请在代码标签(而不是屏幕截图)中发布您的代码。

无论如何,这里有关于显式列列表的错误的第一部分。即使您有StackOverflow线程也有注释,告诉您也应该列出这些列。从帖子#1的屏幕截图中,我可以看到似乎表明您仅传入了值,但没有传入列名。
 

编纂

会员
已加入
2020年12月4日
留言内容
18
编程经验
1-3
我不明白堆栈溢出的家伙在说什么,因为我对C#非常陌生。
请在代码标签(而不是屏幕截图)中发布您的代码。

无论如何,这里有关于显式列列表的错误的第一部分。即使您有StackOverflow线程也有注释,告诉您也应该列出这些列。从帖子#1的屏幕截图中,我可以看到似乎表明您仅传入了值,但没有传入列名。

C#:
using System;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Data;
namespace CRUDAPP
{
    
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        SqlConnection con = new SqlConnection(@"Data Source=DESKTOP-A85V0ME\SQLEXPRESS;Initial Catalog=CRUDDATABASE;Integrated Security=True");
        private void label1_Click(object sender, EventArgs e)
        {

        }

        private void label5_Click(object sender, EventArgs e)
        {

        }

        private void Form1_Load(object sender, EventArgs e)
        {
            GetPatientRecord();
        }

        private void GetPatientRecord()
        {
          
            SqlCommand cmd =新的SqlCommand("Select * from Patient_basicinfo", con);
            DataTable dt = new DataTable();

            con.Open();

            SqlDataReader sdr = cmd.ExecuteReader();
            dt.Load(sdr);
            con.Close();

            Patient_DataGrid.DataSource = dt;

        }

        private void button1_Click(object sender, EventArgs e)
        {
            
            if(isvalid())
            {
                
                SqlCommand cmd =新的SqlCommand("插入Patient_basicinfo值(@ PatientCnic,@ PatientContact,@ PatientAddress,@ Patientname,@ Patientage)", con);
                cmd.CommandType = CommandType.Text;
                cmd.Parameters.AddWithValue("@PatientCnic", textPatientCnic.Text);
                cmd.Parameters.AddWithValue("@PatientContact", textPatientContact.Text);
                cmd.Parameters.AddWithValue("@PatientAddress", textPatientAddress.Text);
                cmd.Parameters.AddWithValue("@Patientname", txtPatientname.Text);
                cmd.Parameters.AddWithValue("@Patientage", textPatientAge.Text);

                con.Open();
                cmd.ExecuteNonQuery();
                con.Close();

                MessageBox.Show("New Patient Info is succesfully saved in the database", "Saved" , MessageBoxButtons.OK, MessageBoxIcon.Error);

                GetPatientRecord();

            }
        }

        private bool isvalid()
        {
            if(txtPatientname.Text == string.Empty)
            {
                MessageBox.Show("Patient Name is Required", "Failed", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }
            return true;
        }
    }
}
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,497
地点
弗吉尼亚州切萨皮克
编程经验
10+
它不在C#代码中。您将在SQL语句中传递给SQL和/或SQL数据库的配置。 C#字符串中的SQL不是C#问题,就像C#字符串中的任何HTML都不是C#问题一样。

在第52行,您没有列出列名。如例外中所述,您需要列出列名称。 (也如StackOverflow注释中所述,SQL Studio将使您无需设置列名即可完成操作。)

目前尚不清楚数据库的最终状态是什么。是在执行C#代码时打开还是关闭IDENTITY_INSERT。
 

编纂

会员
已加入
2020年12月4日
留言内容
18
编程经验
1-3
它不在C#代码中。您将在SQL语句中传递给SQL和/或SQL数据库的配置。 C#字符串中的SQL不是C#问题,就像C#字符串中的任何HTML都不是C#问题一样。

在第52行,您没有列出列名。如例外中所述,您需要列出列名称。 (也如StackOverflow注释中所述,SQL Studio将使您无需设置列名即可完成操作。)

目前尚不清楚数据库的最终状态是什么。是在执行C#代码时打开还是关闭IDENTITY_INSERT。
SqlCommand cmd =新的SqlCommand("插入Patient_basicinfo值(@ PatientCnic,@ PatientContact,@ PatientAddress,@ Patientname,@ Patientage)", con);
这怎么了我写的视频与13:00中的视频相同。我不知道如何列出列名。列名是"该行中提到的PatientCnic,PatientContact,PatientAddress,Patient名称,Patientage。
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,501
地点
悉尼,澳大利亚
编程经验
10+
我不知道如何列出列名。
That's because you're just following a video that provides one specific example instead of doing proper research. If you did some research on SQL and read some documentation and proper tutorials instead of just watching videos then you'd learn how to write an INSERT statement. 这里's a good place to start. One click on the link for the INSERT statement and there's your answer. If you rely on YouTube videos then you will learn very little. Ii suggest that you do some proper research on any area you wish to learn.
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,501
地点
悉尼,澳大利亚
编程经验
10+
列名是"该行中提到的PatientCnic,PatientContact,PatientAddress,Patient名称,Patientage。
不,他们没有被提及。在列之后命名参数是一件好事,但是这些参数可以命名为任何名称,甚至根本没有名称,因此,如果希望指定列名称,则必须指定它们。
 
最佳 底部