C# 表\u名称附近的语法错误

C# 表\u名称附近的语法错误,c#,sql,C#,Sql,所以我有一段代码将文本框中的值插入数据库,但每次我执行代码并输入数据时,我都会收到这条消息 “关键字用户附近的语法错误” 用户是T-SQL中的用户。您应该将其与方括号一起使用,如[USER]。但是,最好的解决方案是将名称更改为非保留字 但更重要的是,请使用。这种类型的字符串连接对攻击是开放的 顺便说一句,我不明白您为什么使用ExecuteReader执行INSERT命令。看起来你只需要使用 对于UPDATE、INSERT和DELETE语句,返回值为 受命令影响的行数 还可用于处理SqlConn

所以我有一段代码将文本框中的值插入数据库,但每次我执行代码并输入数据时,我都会收到这条消息

“关键字用户附近的语法错误”

用户
是T-SQL中的用户。您应该将其与方括号一起使用,如
[USER]
。但是,最好的解决方案是将名称更改为非保留字

但更重要的是,请使用。这种类型的字符串连接对攻击是开放的

顺便说一句,我不明白您为什么使用
ExecuteReader
执行
INSERT
命令。看起来你只需要使用

对于UPDATE、INSERT和DELETE语句,返回值为 受命令影响的行数

还可用于处理
SqlConnection
SqlCommand

using(SqlConnection cnn = new SqlConnection(Connectionstring))
using(SqlCommand cmd1 = cnn.CreateCommand())
{
   cmd1.CommandText = "INSERT INTO [USER] VALUE(@p1, @p2, @p3, @p4, @p5, @p6)";
   cmd1.Parameters.AddWithValue("@p1", int.Parse(textBox1.Text));
   cmd1.Parameters.AddWithValue("@p2", textBox2.Text);
   cmd1.Parameters.AddWithValue("@p3", textBox3.Text);
   cmd1.Parameters.AddWithValue("@p4", textBox4.Text);
   cmd1.Parameters.AddWithValue("@p5", textBox5.Text);
   cmd1.Parameters.AddWithValue("@p6", int.Parse(textBox6.Text));
   cnn.Open();

   int count = cmd1.ExecuteNonQuery();
   if(count > 0)
      MessageBox.Show("Record inserted");
}

您尝试将int连接到string。错误在这里:int.Parse(textBox1.Text)->测试是否为整数后,需要将其转换为字符串。 尝试以下测试:int.Parse(textBox1.Text).ToString()以查看这是否是您的问题。 尝试使用以下命令将字符串聚集为整数:

“插入用户值('”+int.Parse(textBox1.Text)
。。。。 =>字符串+整数

正确答案是:

SqlCommand cmd1 = new SqlCommand("insert into user values('" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text  + "','" + textBox4.Text + "','" + textBox5.Text +  "','" + textBox6.Text + "')", cnn);

尝试在连接前验证textBox1.Text和textBox6.Text是否正确,但建议使用参数。

User
是SQL Server()中的保留工作。您应该将表命名为其他名称,例如
users
。我已添加
[User]
在命令文本中,如果不正确,请还原back@Satpal我提到过,但忘了加上:)谢谢。你有一点是关于不使用单引号和数值的,但这不是真正的问题。参数化查询也将自动处理此问题。
SqlCommand cmd1 = new SqlCommand("insert into user values('" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text  + "','" + textBox4.Text + "','" + textBox5.Text +  "','" + textBox6.Text + "')", cnn);