У меня есть столбец количества запасов в базе данных, а его тип данных - varchar. Когда работники вынимают продукт из магазина, количество инвентаря следует вычесть. У меня возникла какая-то проблема при написании заявления Sql:Выполнить вычисление для столбца данных типа varchar
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;
}
Принимаю в сумме выведенную как параметр. Поскольку resourceQuantity является varchar, поэтому я думаю, что он не смог выполнить никаких вычислений. Поэтому я должен изменить его на:
"UPDATE dbo.products SET Convert(INT, inventoryQuantity) = inventoryQuantity - prodQty WHERE id = '" + productID + "'"
Я делаю правильный путь? Заранее спасибо.
использование параметризованных запросов –
[Плохие привычки пинать: выбор неправильного типа данных] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/12/bad-habits-to-kick-using- the-wrong-data-type.aspx) - вы всегда должны использовать наиболее подходящий тип данных - вот для чего они нужны, в конце концов! И «количество» по определению является ** числовым ** значением - поэтому оно должно храниться как таковое - определенно ** NOT ** как 'varchar'! –