我正在尝试使用 C# 更新数据库,但出现错误:“UPDATE 语句中的语法错误”。我环顾四周寻找此错误的其他示例,发现很多,但每个都不同。很多事情都可能导致这个错误,我就是无法解决这个错误。
query = String.Format(@"UPDATE PAYMENT
SET MONTANT={0}, TYPE='4-Comptant',note='PPA',flag='O', date='{2:yyyyMMdd}'
WHERE num_payment={1}", -payment, id, dt);
daUpdate.UpdateCommand.CommandText = query;
daUpdate.UpdateCommand.ExecuteNonQuery(); //update the table in the database
在调试模式下,这就是字符串最终的样子:
更新付款 SET MONTANT=-390, TYPE='4-Comptant',note='PPA',flag='O', date='20120601' 哪里 num_payment=8
在数据库中,num_payment 是一个长整数和一个主键。MONTANT 是一个替身,其他一切都是文本。
编辑:按照人们的建议,我做了一些修改,但我仍然遇到同样的错误。这是它现在的样子:
OleDbCommand cmd = _con.CreateCommand();
cmd.CommandText = @"UPDATE PAYMENT
SET MONTANT=@montant, [TYPE]='4-Comptant',note='PPA',flag='O', [date]=@theDate
WHERE num_payment=@numPayment";
cmd.Parameters.AddWithValue("@montant", -payment);
cmd.Parameters.AddWithValue("@theDate", String.Format("{0:yyyyMMdd}", dt));
cmd.Parameters.AddWithValue("@numPayment", id);
cmd.ExecuteNonQuery();
调试输出看起来和以前一样,只是现在我看到的是“@something”而不是实际值。