Sql插入System.Data.SqlClient.SqlException

时间:2015-02-17 13:15:05

标签: c# asp.net sql-server

我有一个问题,我看不到它

SqlConnection con = new SqlConnection();
        con.ConnectionString = "Data Source=(local);Initial Catalog=MyDb;Integrated Security=True";
        con.Open();
        SqlCommand cmd = new SqlCommand("insert into User(Username,Password,Firstname,Lastname,Email) VALUES(@user,@pass,@fname,@lname,@emai)", con);
        cmd.Parameters.AddWithValue("@user", TxtUserN.Text);
        cmd.Parameters.AddWithValue("@pass", txtpass.Text);
        cmd.Parameters.AddWithValue("@fname", txtFName.Text);
        cmd.Parameters.AddWithValue("@lname", txtLName.Text);
        cmd.Parameters.AddWithValue("@emai", TxtEmail.Text);
        cmd.ExecuteNonQuery();
        MessageBox.Show("You are registered");

我收到错误,说我有

  

类型'System.Data.SqlClient.SqlException'的未处理异常   发生在System.Data.dll

其他信息:

  

关键字“用户”附近的语法不正确。

我的数据库是

[ID]
      ,[Username]
      ,[Password]
      ,[Firstname]
      ,[Lastname]
      ,[Email]
  FROM [MyDb].[dbo].[User]

2 个答案:

答案 0 :(得分:1)

User是一个关键字,需要引用:

insert into [User] (Username,Password,Firstname,Lastname,Email) VALUES(@user,@pass,@fname,@lname,@emai)

此外,永远不要将密码存储为明文。使用salted cryptographic hash

答案 1 :(得分:0)

User是SQL中的保留关键字,因此请尝试查询:

insert into [User] (Username,Password,Firstname,Lastname,Email) 
VALUES(@user,@pass,@fname,@lname,@emai)

以下是sql =>中保留关键字的列表link