C#错误必须声明标量变量

时间:2015-01-11 13:29:43

标签: c# sql

我收到以下错误,我在网上做了很多研究以重新解决,但我似乎无法找到正确的答案,我会非常感激一些帮助。 非常感谢

  

错误:附加信息:必须声明标量变量   " @用户名@ 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();​    

1 个答案:

答案 0 :(得分:3)

您忘记使用,

分隔您的参数名称
@Username, @DepartmentName

在您的sqlcmdEmp定义行中。

由于您将其编写为@Username@DepartmentName,因此您的程序需要它的确切名称。

使用using statement处理您的SqlConnectionSqlCommand,而不是手动调用.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?