代码:
string query1 = @"UPDATE global_mapping set escape_id = " +
dataGridView1.Rows[i].Cells[2].Value + ",function_id = " +
dataGridView1.Rows[i].Cells[3].Value + ",function_name = '" +
dataGridView1.Rows[i].Cells[4].Value + "',parameter_name = '" +
dataGridView1.Rows[i].Cells[5].Value + "',parameter_validity = '" +
dataGridView1.Rows[i].Cells[6].Value + "',statusparameter_id = " +
dataGridView1.Rows[i].Cells[7].Value + ",acb_datatype = '" +
dataGridView1.Rows[i].Cells[8].Value + "',data_type_id = " +
dataGridView1.Rows[i].Cells[9].Value + ",bit_size = " +
dataGridView1.Rows[i].Cells[10].Value + ",validity_status ='" +
dataGridView1.Rows[i].Cells[11].Value + "',validity_func = '" +
dataGridView1.Rows[i].Cells[12].Value + "'WHERE global_mapping.parameter_id =" +
dataGridView1.Rows[i].Cells[1].Value + "";
OleDbCommand cmd1 = new OleDbCommand(query1, conn);
cmd1.ExecuteNonQuery();
代码结束:
当我执行上面的代码时,我收到一条错误,指出“Update语句中的语法错误”。 有人可以告诉我如何解决这个问题吗?
答案 0 :(得分:2)
看起来你需要在WHERE子句之前添加一个空格。
希望这有帮助,
比尔
答案 1 :(得分:1)
哇。我们可以说...... SQL注入吗?
尝试使用参数。您不仅会保护自己,而且您的SQL将变得更具可读性。
答案 2 :(得分:1)
永远不要使用字符串连接来构建SQL查询。使用SQL参数。
答案 3 :(得分:0)
糟糕! 请提供最终的query1值并尝试格式化,以便我们可以更好地了解它。我的猜测是缺失的东西。
答案 4 :(得分:0)
我会说你在那里丢失了一些引用,但是你的代码是我说不出来的猪圈。如果你不修复你的代码,那么至少给我们一个query1转储,这样我们就可以读你的实际查询。
并使用参数或存储过程,如前面的回复所说。只需要用一些令人讨厌的东西覆盖你的变量就可以了,你的服务器将对任何删除你的桌子或更糟糕的人开放。
即使这是一个本地的“安全”数据库,你现在也应该忘掉你的坏习惯。
答案 5 :(得分:-1)
穿戴
Console.WriteLine(query1)
之前的OleDbCommand cmd1 = new OleDbCommand(query1, conn);
查看打印到控制台窗口的query1
的值
SQL语句看起来不错吗?我猜不是 - 你现在能够找到一个非数字的字段,并且在网格中是空白的。
并且,正如其他人所说的那样使用参数。