sql 查询的语法错误
本文关键字:错误 语法 查询 sql | 更新日期: 2023-09-27 18:17:54
我有这个代码块在我的函数中执行,但它一直说有一个语法错误。我错过了什么吗?因为对我来说似乎很好
string query3 = "INSERT INTO dbo.Liguanea_Progress VALUES('" + comboBox2.Text + "' '" + textBox5.Text + "' '" + textBox2.Text + "' '" + comboBox3.Text + "''" + textBox3.Text + "''" + comboBox1.Text + "');";
- 使用
insert
时,请始终包含列名。因此,您的查询应该是INSERT INTO dbo.Liguanea_Progress(col1, col2, . . .)
。 - 切勿只是将用户输入填充到查询字符串中。尽管这样做会使代码容易受到 SQL 注入的影响,但另一个重要原因是您可能会引入语法错误。使用参数化查询。
VALUES()
中的值应用逗号分隔,而不是空格。
查询语法无效。您需要在每个参数后都有逗号。
string query3 = "INSERT INTO dbo.Liguanea_Progress VALUES(@Param1, @Param2,@Param3, @Param4, @Param5, @Param6);
还要开始使用 sql 命令参数来保护您免受 sql 注入的影响。此外,这使您可以清楚地了解查询。
SqlCommand cmd = new SqlCommand();
cmd.CommandText = query3;
cmd.Parameters.AddWithValue("@Param1", comboBox2.Text);
cmd.Parameters.AddWithValue("@Param2", textBox5.Text);
cmd.Parameters.AddWithValue("@Param3", textBox2.Text);
cmd.Parameters.AddWithValue("@Param4", comboBox3.Text);
cmd.Parameters.AddWithValue("@Param5", textBox3.Text);
cmd.Parameters.AddWithValue("@Param6", comboBox1.Text);
string query3 = "INSERT INTO dbo.Liguanea_Progress(col1) VALUES('" + textBox.Text + "')";
将此模式用于涉及的后续列和相应的值。在执行插入查询时声明所涉及的列也很重要,以避免混淆。
此外,我假设您正在使用 ADO.net 从此代码片段来看。您可能希望参数化查询以防止 SQL 注入,如下所示:
command.Parameters.Add(new SqlParameter("Col1", textBox.Text));
现在使您的查询如下所示:
string query3 = "INSERT INTO dbo.Liguanea_Progress(col1) VALUES(@Col1)";
这使得 sql 代码更易于编辑。
值之间缺少逗号和括号,请尝试这样操作
string query3 = "INSERT INTO dbo.Liguanea_Progress VALUES('" + comboBox2.Text + "'),('" + textBox5.Text + "'),('" + textBox2.Text + "'),('" + comboBox3.Text + "'),('" + textBox3.Text + "'),('" + comboBox1.Text + "');";
如果要在同一列中插入多个值,则需要在每个值两边加上括号。如果您将其插入一行,那么您只是缺少逗号;
string query3 = "INSERT INTO dbo.Liguanea_Progress VALUES('" + comboBox2.Text + "','" + textBox5.Text + "','" + textBox2.Text + "','" + comboBox3.Text + "','" + textBox3.Text + "','" + comboBox1.Text + "');";