查询在SQL中工作正常但在代码中没有

时间:2014-04-03 19:31:39

标签: c# sql

我有一个简单的查询,通过替换旧数据并更新正在添加到前一个数据的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

1 个答案:

答案 0 :(得分:1)

杰克,

   这是因为当您通过字符串连接手动生成查询时,它不会将数值一起添加。它将通过各自的.ToString()方法运行所有变量,获取结果,并将结果连接到字符串中。根据您执行此查询的方式(ADO.NET,Linq2SQL或实体框架),您最好使用这些技术中的机制来更新您的值,而不是手动创建这些字符串。如果要继续这样做,则必须检索“ProductQuantity”的值,将该值添加到50(或任何您想要的值),然后在执行查询之前进行连接。