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 + "');";

sql 查询的语法错误

  1. 使用 insert 时,请始终包含列名。因此,您的查询应该是INSERT INTO dbo.Liguanea_Progress(col1, col2, . . .)
  2. 切勿只是将用户输入填充到查询字符串中。尽管这样做会使代码容易受到 SQL 注入的影响,但另一个重要原因是您可能会引入语法错误。使用参数化查询。
  3. 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 + "');";