2014-04-03 41 views
0

工作正常,我有一个简单的查询,通过更换陈旧的数据,并更新其被添加到前一个ProductQuantity更新ProductPrice列。查询SQL中而不是在代码

我写的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

+4

你正在用单引号括住你的数字。 – Andrew

+2

您应该首先查看参数化查询。[请参阅此处](http://blogs.msdn.com/b/sqlphp/archive/2008/09/30/how-and-why-to-use-参数-queries.aspx)。是的,看安德鲁的评论。你只需要“”而不是“”“。 –

+0

谢谢@Andrew为我工作:) –

回答

1

Jack,

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