System.Data.SqlClient.SqlException: 'Must declare the scalar variable'
System.Data.SqlClient.SqlException: 'Must declare the scalar variable'
我已经检查了其他线程的相关错误,但其中 none 与我在特定级别的问题有关。
我正在尝试通过 WPF 表单中的文本框编辑来更新数据,通过更新按钮提交到 SQL 数据库。当表单打开并选择用户时,将加载初始/当前数据。它将在 SQL 数据库中的相应文本框中显示与它们相关的所有信息,当我想更改加载的信息并更新它时,问题就出现了。
在 "da.UpdateCommand.ExecuteNonQuery();" 行抛出错误,指出 @FirstName 的标量变量尚未声明,但在注释掉它时,它只是移动到下一行并将继续进行。所以它与任何一个参数都没有具体关系。
我仔细检查了数据库中的所有数据类型是否正确,并确保没有输入错误(尽管有可能我漏掉了一个)。
任何关于可能导致此问题的想法都将不胜感激,我一直在碰壁。
void UpdateEmployee()
{
using (SqlConnection con = new SqlConnection(Properties.Settings.Default.adminConnectionString))
{
SqlCommand cmd = new SqlCommand();
SqlDataAdapter da = new SqlDataAdapter
{
UpdateCommand = new SqlCommand("UPDATE dbo.EMPLOYEES " +
"SET FirstName = @FirstNameCL, " +
"InsuranceDate = @InsuranceDateCL, " +
"InsurancePlan = @PlanCL, " +
"InsuranceStatus = @StatusCL, " +
"InsuranceElig = @EligibleCL" +
"Department = @Dpt, " +
"LastName = @LastNameCL, " +
"DateOfFullTime = @FullTimed, " +
"DateOfHire = @startdate, " +
"Passcode = @PasswordCL, " +
"Phone1 = @HomeCL" +
"Phone2 = @CellCL, " +
"Address = @AddressCL, " +
"IsTempEmp = @Istemp," +
"Comments = @CommentsCL" +
"WHERE employeeID = EmpID", con)
};
{
da.UpdateCommand.Parameters.Add("@FirstName",SqlDbType.NVarChar).Value = FirstNameCL.Text;
da.UpdateCommand.Parameters.Add("@InsuranceDate", SqlDbType.Date).Value = InsuranceDateCL.SelectedDate;
da.UpdateCommand.Parameters.Add("@InsurancePlan", SqlDbType.VarChar).Value = PlanCL.Text;
da.UpdateCommand.Parameters.Add("@InsuranceStatus", SqlDbType.VarChar).Value = StatusCL.Text;
da.UpdateCommand.Parameters.Add("@InsuranceElig", SqlDbType.VarChar).Value = EligibleCL.Text;
da.UpdateCommand.Parameters.Add("@Depeartment", SqlDbType.VarChar).Value = Dpt.Text;
da.UpdateCommand.Parameters.Add("@LastName", SqlDbType.NVarChar).Value = LastNameCL.Text;
da.UpdateCommand.Parameters.Add("@DateOfFullTime", SqlDbType.Date).Value = fulltimed.SelectedDate;
da.UpdateCommand.Parameters.Add("@DateofHire", SqlDbType.Date).Value = startdate.SelectedDate;
da.UpdateCommand.Parameters.Add("@Passcode", SqlDbType.VarChar).Value = PasswordCL.Text;
da.UpdateCommand.Parameters.Add("@Phone1", SqlDbType.VarChar).Value = HomeCL.Text;
da.UpdateCommand.Parameters.Add("@Phone2", SqlDbType.VarChar).Value = CellCL.Text;
da.UpdateCommand.Parameters.Add("@Address", SqlDbType.VarChar).Value = AddressCL.Text;
da.UpdateCommand.Parameters.Add("@IsTempEmp", SqlDbType.VarChar).Value = Istemp.Text;
da.UpdateCommand.Parameters.Add("@Comments", SqlDbType.NVarChar).Value = CommentsCL.Text;
con.Open();
da.UpdateCommand.ExecuteNonQuery();
con.Close();
}
}
}
#region Update Button
private void BtnUpdate_Click(object sender, EventArgs e)
{
UpdateEmployee();
System.Windows.Forms.MessageBox.Show("Employee data successfully updated.");
}
#endregion
"SET FirstName = @FirstNameCL, "
应该是
"SET FirstName = @FirstName, "
取决于以下情况:
da.UpdateCommand.Parameters.Add("@FirstName",SqlDbType.NVarChar).Value = FirstNameCL.Text;
是正确的变量名。
Parameters.Add的第一个参数是参数名:
public System.Data.SqlClient.SqlParameter Add (string parameterName, System.Data.SqlDbType sqlDbType);
da.UpdateCommand.Parameters.Add("@FirstName",SqlDbType.NVarChar).Value = FirstNameCL.Text;
@FirstName 与您的 sql 命令不匹配
我已经检查了其他线程的相关错误,但其中 none 与我在特定级别的问题有关。
我正在尝试通过 WPF 表单中的文本框编辑来更新数据,通过更新按钮提交到 SQL 数据库。当表单打开并选择用户时,将加载初始/当前数据。它将在 SQL 数据库中的相应文本框中显示与它们相关的所有信息,当我想更改加载的信息并更新它时,问题就出现了。
在 "da.UpdateCommand.ExecuteNonQuery();" 行抛出错误,指出 @FirstName 的标量变量尚未声明,但在注释掉它时,它只是移动到下一行并将继续进行。所以它与任何一个参数都没有具体关系。
我仔细检查了数据库中的所有数据类型是否正确,并确保没有输入错误(尽管有可能我漏掉了一个)。
任何关于可能导致此问题的想法都将不胜感激,我一直在碰壁。
void UpdateEmployee()
{
using (SqlConnection con = new SqlConnection(Properties.Settings.Default.adminConnectionString))
{
SqlCommand cmd = new SqlCommand();
SqlDataAdapter da = new SqlDataAdapter
{
UpdateCommand = new SqlCommand("UPDATE dbo.EMPLOYEES " +
"SET FirstName = @FirstNameCL, " +
"InsuranceDate = @InsuranceDateCL, " +
"InsurancePlan = @PlanCL, " +
"InsuranceStatus = @StatusCL, " +
"InsuranceElig = @EligibleCL" +
"Department = @Dpt, " +
"LastName = @LastNameCL, " +
"DateOfFullTime = @FullTimed, " +
"DateOfHire = @startdate, " +
"Passcode = @PasswordCL, " +
"Phone1 = @HomeCL" +
"Phone2 = @CellCL, " +
"Address = @AddressCL, " +
"IsTempEmp = @Istemp," +
"Comments = @CommentsCL" +
"WHERE employeeID = EmpID", con)
};
{
da.UpdateCommand.Parameters.Add("@FirstName",SqlDbType.NVarChar).Value = FirstNameCL.Text;
da.UpdateCommand.Parameters.Add("@InsuranceDate", SqlDbType.Date).Value = InsuranceDateCL.SelectedDate;
da.UpdateCommand.Parameters.Add("@InsurancePlan", SqlDbType.VarChar).Value = PlanCL.Text;
da.UpdateCommand.Parameters.Add("@InsuranceStatus", SqlDbType.VarChar).Value = StatusCL.Text;
da.UpdateCommand.Parameters.Add("@InsuranceElig", SqlDbType.VarChar).Value = EligibleCL.Text;
da.UpdateCommand.Parameters.Add("@Depeartment", SqlDbType.VarChar).Value = Dpt.Text;
da.UpdateCommand.Parameters.Add("@LastName", SqlDbType.NVarChar).Value = LastNameCL.Text;
da.UpdateCommand.Parameters.Add("@DateOfFullTime", SqlDbType.Date).Value = fulltimed.SelectedDate;
da.UpdateCommand.Parameters.Add("@DateofHire", SqlDbType.Date).Value = startdate.SelectedDate;
da.UpdateCommand.Parameters.Add("@Passcode", SqlDbType.VarChar).Value = PasswordCL.Text;
da.UpdateCommand.Parameters.Add("@Phone1", SqlDbType.VarChar).Value = HomeCL.Text;
da.UpdateCommand.Parameters.Add("@Phone2", SqlDbType.VarChar).Value = CellCL.Text;
da.UpdateCommand.Parameters.Add("@Address", SqlDbType.VarChar).Value = AddressCL.Text;
da.UpdateCommand.Parameters.Add("@IsTempEmp", SqlDbType.VarChar).Value = Istemp.Text;
da.UpdateCommand.Parameters.Add("@Comments", SqlDbType.NVarChar).Value = CommentsCL.Text;
con.Open();
da.UpdateCommand.ExecuteNonQuery();
con.Close();
}
}
}
#region Update Button
private void BtnUpdate_Click(object sender, EventArgs e)
{
UpdateEmployee();
System.Windows.Forms.MessageBox.Show("Employee data successfully updated.");
}
#endregion
"SET FirstName = @FirstNameCL, "
应该是
"SET FirstName = @FirstName, "
取决于以下情况:
da.UpdateCommand.Parameters.Add("@FirstName",SqlDbType.NVarChar).Value = FirstNameCL.Text;
是正确的变量名。
Parameters.Add的第一个参数是参数名:
public System.Data.SqlClient.SqlParameter Add (string parameterName, System.Data.SqlDbType sqlDbType);
da.UpdateCommand.Parameters.Add("@FirstName",SqlDbType.NVarChar).Value = FirstNameCL.Text;
@FirstName 与您的 sql 命令不匹配