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);