как получить количество (*) для количества обновленных записей - PullRequest
1 голос
/ 17 июня 2011

Я обновляю базу данных sql server 2008, используя c #, вот так:

foreach (DataRow row in dt.Rows)
{
    faxstatus = row.ItemArray[5].ToString().Contains("0000") ? "Faxed" : "Error";

    query = 
        @"update FileLog set
        FaxStatus=" + "'" + faxstatus + "'," +
        "FaxedPageCount=" + "'" + row.ItemArray[1] + "'," +
        "dtFaxed=" + "'" + row.ItemArray[2] + "'," +
        "BiscomCode=" + "'" + row.ItemArray[5] + "', " +
        "RetryCount=" + "'" + row.ItemArray[4] + "' " +
        "where CONVERT(VARCHAR(255), JobID) =" + "'" + row.ItemArray[3] + "'" +
        " and FaxStatus<>'Faxed'";

    command = new SqlCommand(query, myConnection);
    command.ExecuteNonQuery();
    NumberOfRecordsUpdated++;

}

Хотелось бы узнать, можно ли вернуть, сколько записей было обновлено?

Ответы [ 5 ]

8 голосов
/ 17 июня 2011

Да.Используйте возвращаемое значение ExecuteNonQuery.: -)

Цитирование документации ExecuteNonQuery :

Для операторов UPDATE, INSERT и DELETE возвращаемое значение - количество затронутых строкпо команде.

5 голосов
/ 17 июня 2011

Захват и использование результата ExecuteNonQuery в целое число.Этот метод возвращает количество записей, затронутых операцией.

См. SqlCommand.ExecuteNonQuery Method .

При этом, насколько вы доверяете своему источнику данных?Достаточно ли поставить на это свою целостность данных?Я был бы повторно, если бы я не умолял вас исследовать параметризованные запросы.Заявление using также будет оправдано, чтобы ваши одноразовые ресурсы (SqlConnection, SqlCommand и т. Д.) Были правильно обработаны.

3 голосов
/ 17 июня 2011

Добавьте SELECT @@ROWCOUNT к вашему заявлению и используйте ExecuteScalar вместо ExecuteNoneQuery.

3 голосов
/ 17 июня 2011

Ссылаясь на SqlCommand.ExecuteNonQuery Method :

Возвращаемое значение
Тип: System.Int32
Количество затронутых строк.

1 голос
/ 17 июня 2011

Вы можете использовать @@ ROWCOUNT .

...