我收到以下错误,我在网上做了很多研究以重新解决,但我似乎无法找到正确的答案,我会非常感激一些帮助。 非常感谢
错误:附加信息:必须声明标量变量 " @用户名@ DepartmentName的"
//DepartmentName and Username are both foreign key from LoginDetails table and Department table
SqlConnection cn = new SqlConnection(@"Data Source=PRINCENICHOLAS;Initial Catalog=Kids Company IT Asset;Integrated Security=True");
SqlCommand sqlcmdLogin = new SqlCommand("Insert into LoginDetails(Username,Password,PrivilegeCode) Values(@Username,@Password,@PrivilegeCode)", cn);
sqlcmdLogin.Parameters.AddWithValue("@Username", txtEmpFirstName.Text + '.' + txtEmpSurname.Text);
sqlcmdLogin.Parameters.AddWithValue("@Password", txtEmpPassword.Text);
sqlcmdLogin.Parameters.AddWithValue("@PrivilegeCode", cboPrivilege.SelectedItem.ToString());
cn.Open();
sqlcmdLogin.ExecuteNonQuery();
cn.Close();
//Insert Employee Table
SqlCommand sqlcmdEmp = new SqlCommand("Insert into Employee(FirstName,LastName,DOB,Email,PhoneNumber,JobRole,Username,DepartmentName) Values(@FirstName,@LastName,@DOB,@Email,@PhoneNumber,@JobRole,@Username@DepartmentName)", cn);
sqlcmdEmp.Parameters.AddWithValue("@FirstName", txtEmpFirstName.Text);
sqlcmdEmp.Parameters.AddWithValue("@LastName", txtEmpSurname.Text);
sqlcmdEmp.Parameters.AddWithValue("@DOB", dtpEmpDOB.Text);
sqlcmdEmp.Parameters.AddWithValue("@Email", txtEmpEmail.Text);
sqlcmdEmp.Parameters.AddWithValue("@PhoneNumber", txtEmpPhone.Text);
sqlcmdEmp.Parameters.AddWithValue("@JobRole", txtJobRole.Text);
sqlcmdEmp.Parameters.AddWithValue("@Username", txtEmpFirstName.Text + '.' + txtEmpSurname.Text);
sqlcmdEmp.Parameters.AddWithValue("@DepartmentName", cboDeptName.SelectedItem.ToString());
cn.Open();
sqlcmdEmp.ExecuteNonQuery();
cn.Close();
答案 0 :(得分:3)
您忘记使用,
@Username, @DepartmentName
在您的sqlcmdEmp
定义行中。
由于您将其编写为@Username@DepartmentName
,因此您的程序需要它的确切名称。
使用using
statement处理您的SqlConnection
和SqlCommand
,而不是手动调用.Close()
方法。
using(SqlConnection cn = new SqlConnection(connectionString))
using(SqlCommand cmd = cn.CreateCommand())
{
// Define your command text
// Add your paramter values
// Open your connection
// Execute your query
}
不要将密码存储为纯文本。阅读:Best way to store password in database
不要使用AddWithValue
方法。 可能有时会产生意外结果。使用.Add()
method或它的重载。阅读:Can we stop using AddWithValue()
already?