C#为什么我在数据库中插入数据时会出现错误异常?

Edw*_*cia -3 c#

我创建了一个名为BUDGET_FINALTEST的表,只要我在按钮中运行它就会一直出现异常错误?

    SqlCommand cmd = new SqlCommand("insert into BUDGET_FINALTEST values (@EMPLOYEE_ID,@LAST_NAME,@FIRST_NAME,@DIVISION,@DATE_OF_BUDGET,@BUDGET)", con);
    cmd.Parameters.AddWithValue("@EMPLOYEE_ID", tbEmployeeID.Text);
    cmd.Parameters.AddWithValue("@LAST_NAME", tbLName.Text);
    cmd.Parameters.AddWithValue("@FIRST_NAME", tbFName.Text);
    cmd.Parameters.AddWithValue("@DIVISION", tbDivision.Text);
    cmd.Parameters.AddWithValue("@DATE_OF_BUDGET", dateTimePicker2.Value.Date);
    cmd.Parameters.AddWithValue("@BUDGET", tbBudget.Text);
    cmd.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)

System.Data.dll中出现未处理的类型'System.Data.SqlClient.SqlException'的异常

附加信息:列名称或提供的值数与表定义不匹配

Zoh*_*led 5

您的参数数量错误,或者订单错误.始终在insert语句中指定列列表.
这样可以防止您犯这样的错误,并且即使将新列添加到表中也可以保持代码有效.

"insert into BUDGET_FINALTEST values (@EMPLOYEE_ID,@LAST_NAME,@FIRST_NAME,@DIVISION,@DATE_OF_BUDGET,@BUDGET)"
Run Code Online (Sandbox Code Playgroud)

应该

"insert into BUDGET_FINALTEST (EMPLOYEE_ID, LAST_NAME, FIRST_NAME, DIVISION, DATE_OF_BUDGET, BUDGET) values (@EMPLOYEE_ID,@LAST_NAME,@FIRST_NAME,@DIVISION,@DATE_OF_BUDGET,@BUDGET)"
Run Code Online (Sandbox Code Playgroud)

  • 附加说明:当第一列是用户不想(并且不能)提供值的PKID时,或者当存在行版本跟踪列时,此问题*特别常见*基本上:任何数据库将自动提供值 (3认同)