#c# #sql
#c# #sql
Вопрос:
Когда я запускаю приведенную ниже функцию, она выполняет цикл и записывает новые значения в базу данных, но все значения одинаковы. У меня была похожая проблема, но я реализовал ее по-другому — это другой способ, не использующий массив.
cmd = con.CreateCommand();
string end = @"SELECT balance, accrued FROM account ";
string update = @"UPDATE account SET balance = @balance WHERE account.prodid = product.prodid";
con.Open();
cmd = new SQLiteCommand(end, con);
reader = cmd.ExecuteReader();
while (reader.Read())
{
double balance = double.Parse(reader[0].ToString());
double accrued = double.Parse(reader[1].ToString());
balance = balance *accrued;
cmd = new SQLiteCommand(update, con);
cmd.Parameters.AddWithValue("balance", balance);
cmd.ExecuteNonQuery();
}
Комментарии:
1. Что
product
в вашем sql-операторе update? Похоже, это даже не допустимый оператор sql.2. @johnluke. следовательно, продукт представляет собой таблицу в базе данных
3. Вы хотите обновить всю таблицу учетных записей или только определенный идентификатор?
4. @Jmeister скопируйте вашу инструкцию update, вставьте в SSMS, замените @ balance на 1, затем попробуйте запустить. Это должно завершиться неудачей: не удалось привязать многосоставный идентификатор для продукта … или что-то в этом роде
5. Я хочу запускать обновление, чтобы при каждом вычислении обновлялся баланс, в котором постоянно находится строка
Ответ №1:
Вы можете использовать SQL напрямую для вычисления баланса вашего столбца, как показано ниже.
UPDATE account SET balance = balance * accrued
С наилучшими пожеланиями.