我有这个代码块在我的函数中执行,但它一直说有语法错误。我错过了什么吗?因为对我来说似乎很好
string query3 = "INSERT INTO dbo.Liguanea_Progress VALUES('" + comboBox2.Text + "' '" + textBox5.Text + "' '" + textBox2.Text + "' '" + comboBox3.Text + "''" + textBox3.Text + "''" + comboBox1.Text + "');";
答案 0 :(得分:3)
评论太长了。
insert
时,请始终包含列名称。因此,您的查询应为INSERT INTO dbo.Liguanea_Progress(col1, col2, . . .)
。VALUES()
中的值应以逗号分隔,而不是以空格分隔。答案 1 :(得分:2)
您的查询语法无效。你需要在每个参数后都有逗号。
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);
答案 2 :(得分:1)
在您的值之间缺少逗号和括号,请尝试类似这样的内容
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 + "');";
答案 3 :(得分:1)
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代码更容易编辑。