update语句中的语法错误

时间:2009-05-19 08:26:25

标签: sql oledb

代码:

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语句中的语法错误”。 有人可以告诉我如何解决这个问题吗?

6 个答案:

答案 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语句看起来不错吗?我猜不是 - 你现在能够找到一个非数字的字段,并且在网格中是空白的。

并且,正如其他人所说的那样使用参数。