UPDATE语句中的C#-语法错误
我试图使用C#更新数据库,但得到错误:“update语句中的语法错误”。我环顾四周寻找这个错误的其他例子,发现了很多,但每一个都是不同的。很多事情都会导致这个错误,我就是不能把我的手指放在这个上面UPDATE语句中的C#-语法错误,c#,sql,C#,Sql,我试图使用C#更新数据库,但得到错误:“update语句中的语法错误”。我环顾四周寻找这个错误的其他例子,发现了很多,但每一个都是不同的。很多事情都会导致这个错误,我就是不能把我的手指放在这个上面 query = String.Format(@"UPDATE PAYMENT SET MONTANT={0}, TYPE='4-Comptant',note='PPA',flag='O', date='{2:yyyyMMdd}'
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
在调试模式下,字符串的最终外观如下:
UPDATE PAYMENT
SET MONTANT=-390, TYPE='4-Comptant',note='PPA',flag='O', date='20120601'
WHERE num_payment=8
调试输出看起来相同
和以前一样,只是现在我看到的是“@something”,而不是实际值。在[TYPE]和[DATE]周围放上方括号,这是SQL关键字
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
字段“note”和“flag”周围需要有[]。我添加了这些,现在查询不再给出该错误。尝试不同的日期格式:
date='{2:yyyy-MM-dd}'
数据库,num\u payment是一个长整数和主键。蒙塔特是一个替身,其他一切都是文本,有些东西不是你想象的那样。请参阅使用参数化SQL(出于多种原因)。@agent-j:我不能,数据库就是这样,不允许我更改格式@@j探员:我不知道你说的“强”是什么意思,它显示为“文本”是MS Access。我的意思是,我的老板给了我这个数据库,它的条目已经是这种格式了。他不希望我更改格式。问题被标记为mysql
,mysql不使用[]
作为名称分隔符TYPE
和DATE
是(DATE
是一个关键字,但不是保留字)。实际上,这是我的错误,它只是简单的SQL。我已经取下了标签。
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