执行varchar数据类型列的计算

时间:2014-01-03 04:13:09

标签: sql database

我在数据库中有一个库存数量列,其数据类型是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 + "'"

我是以正确的方式做的吗?提前谢谢。

1 个答案:

答案 0 :(得分:0)

您应该转换作业的另一面:

"UPDATE dbo.products 
SET inventoryQuantity = CAST((CAST(inventoryQuantity AS INT) - prodQty) AS VARCHAR(20)) WHERE id = '" + productID + "'"

此外,不要连接您的查询,使用参数。您现在很容易受到SQL注入攻击。