我在数据库中有一个库存数量列,其数据类型是varchar。当工人从商店取出产品时,应扣除库存数量。在编写Sql语句时我遇到了一些问题:
public bool updateInventoryQty(string productID, int prodQty)
{
bool result = false;
result = Conversion.intToBool(FoodBankDB.executeNonQuery(
"UPDATE dbo.products SET inventoryQuantity = inventoryQuantity - prodQty WHERE id = '" + productID + "'"
));
return result;
}
我将取出的金额作为参数。由于inventoryQuantity是varchar所以我认为它无法执行任何计算。所以我应该把它改成:
"UPDATE dbo.products SET Convert(INT, inventoryQuantity) = inventoryQuantity - prodQty WHERE id = '" + productID + "'"
我是以正确的方式做的吗?提前谢谢。
答案 0 :(得分:0)
您应该转换作业的另一面:
"UPDATE dbo.products
SET inventoryQuantity = CAST((CAST(inventoryQuantity AS INT) - prodQty) AS VARCHAR(20)) WHERE id = '" + productID + "'"
此外,不要连接您的查询,使用参数。您现在很容易受到SQL注入攻击。