Используйте запрос UPDATE внутри запроса SELECTC#

Место общения программистов C#
Ответить
Гость
 Используйте запрос UPDATE внутри запроса SELECT

Сообщение Гость »


Я пытаюсь получить текущий баланс акционеров из таблицы, затем добавить, например, 10 процентов к их текущему балансу, а затем обновить таблицу обратно с новым балансом, но получаю сообщение об ошибке, в котором говорится, что соединение не закрыто.
ОБНОВЛЕНИЕ:profit_percentage — это переменная, предоставляемая пользователем.

Код: Выделить всё

try
{
var con = new SqlConnection(constr);
con.Open();
string stm = "SELECT * From shareholders_term";

var cmd = new SqlCommand(stm, con);

SqlDataReader rdr = cmd.ExecuteReader();

while (rdr.Read())
{
if (rdr["current_balance"] != null)
{
num++;

int current_shareholder = Convert.ToInt32(rdr["shareholder_id"]);
current_balance = Convert.ToDecimal(rdr["current_balance"]);

decimal percentage = current_balance * profitpercentage / 100;
decimal new_balance = percentage + current_balance;

var cmdcurrentbalance = new SqlCommand(
"UPDATE shareholders_term SET profit_percentage = @percentage, current_balance = @new_balance WHERE shareholder_id = @current_shareholder",
con
);

cmdcurrentbalance.Parameters.AddWithValue("@percentage", profitpercentage);
cmdcurrentbalance.Parameters.AddWithValue("@new_balance", new_balance);
cmdcurrentbalance.Parameters.AddWithValue("@current_shareholder", current_shareholder);

cmdcurrentbalance.ExecuteNonQuery();

lblupdatecounter.Text = num + " - Shareholders updated.";
}
}
con.Close();

MessageBox.Show("Profit added to shareholders");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}


Источник: https://stackoverflow.com/questions/781 ... lect-query
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»