我有一个简单的查询,通过替换旧数据并更新正在添加到前一个数据的ProductPrice
来更新ProductQuantity
列。
我在SQL中编写了查询并且它工作正常,但在VS代码中它连接ProductQuantity
。就像我在产品数量上有20
一样,之后结果应为20 + 50 = 70
,但在代码中执行查询后,它会将值更新为2050
SQL中的查询是:
UPDATE ProductLog
SET ProductQuantity = ProductQuantity + 50,
ProductPrice = 20
WHERE ProductCode = 1
我的C#代码中的查询是:
sql = "";
sql += "UPDATE ProductLog
SET ProductQuantity = ProductQuantity
+ '"
+ productQuantity
+ "', ProductPrice = '"
+ productPrice
+ "' WHERE ProductCode = '"
+ ProductCode
+ "'";
我无法在代码查询中找到错误。请指导我这方面。
表中列的数据类型为varchar
。
答案 0 :(得分:1)
杰克,
这是因为当您通过字符串连接手动生成查询时,它不会将数值一起添加。它将通过各自的.ToString()方法运行所有变量,获取结果,并将结果连接到字符串中。根据您执行此查询的方式(ADO.NET,Linq2SQL或实体框架),您最好使用这些技术中的机制来更新您的值,而不是手动创建这些字符串。如果要继续这样做,则必须检索“ProductQuantity”的值,将该值添加到50(或任何您想要的值),然后在执行查询之前进行连接。