получить обновленное значение параметра на asp.net с помощью команды sqlcommand

1

Я использую запрос, чтобы обновить значение столбца в таблице, а также получить обновленное значение, используя следующий способ на сайте ASP.NET. Есть ли способ использовать одиночный запрос вместо двойных запросов, как показано ниже?

using (SqlConnection connection = new SqlConnection(connStr)){
    string updateUserQuery = "Update user_master set login_failed_attempts = login_failed_attempts + 1  where id = @id; Select @login_failed = login_failed_attempts from user_master where id = @id";
    SqlCommand cmd = new SqlCommand(updateUserQuery, connection);
    cmd.Parameters.Add("@id", SqlDbType.Int).Value = user_id;
    SqlParameter outputIdParam = new SqlParameter("@login_failed", SqlDbType.Int)
    {
        Direction = ParameterDirection.Output
    };
    cmd.Parameters.Add(outputIdParam);
    cmd.ExecuteNonQuery();
    int loginFailedAttempts = int.Parse(outputIdParam.Value.ToString());
}

Обновленный код приведен ниже, после ответа Мэтью.

string updateUserQuery = "Update user_master set login_failed_attempts = login_failed_attempts + 1 OUTPUT INSERTED.login_failed_attempts where id = @id";
SqlCommand cmd = new SqlCommand(updateUserQuery, connection);
cmd.Parameters.Add("@id", SqlDbType.Int).Value = user_id;
int loginFailedAttempts = (int)cmd.ExecuteScalar();
Теги:
sql-server
sqlcommand

1 ответ

2
Лучший ответ

Используйте предложение OUTPUT.

UPDATE user_master
SET login_failed_attempts = login_failed_attempts + 1
OUTPUT INSERTED.login_failed_attempts
WHERE id = @id

Затем измените ExecuteNonQuery на ExecuteScalar и используйте результат из этого.

Вы также можете изменить его на ExecuteReader и ExecuteReader несколько записей, но, учитывая использование @id я предполагаю, что вы этого не хотите.

  • 0
    Вот что я искал. Благодарю.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню