Показать, сколько строк было удалено - PullRequest
4 голосов
/ 28 августа 2010

Я использую программу на C #, и моя база данных находится в SQL Server 2008.

Когда пользователь удалил несколько строк из базы данных, я хочу показать ему / ей в приложении Windows, сколько строк удалено.

Я хочу знать, как я могу отправить сообщение SQL на C # и показать его для пользователя. Например, когда я удалил 4 строки из таблицы, SQL показывает сообщение вроде (затронуто 4 строки). Теперь я хочу отправить номер 4 моей программе на C #. Как мне это сделать? Спасибо.

Ответы [ 4 ]

5 голосов
/ 28 августа 2010

Если вы используете SqlCommand из приложения .NET для выполнения удаления / обновления, результат ExecuteNonQuery() возвращает количество строк, затронутых последним оператором команды.

Смотрите http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executenonquery.aspx.

0 голосов
/ 28 августа 2010

Если вы используете метод System.Data.SqlClient.SqlCommand.ExecuteNonQuery или System.Data.Common.DbCommand.ExecuteNonQuery, тогда возвращаемое значение должно быть числом строк, затронутых вашим оператором (я думаю, последним оператором в вашей команде).

Это предостережение ... если вы выполняете пакетную или хранимую процедуру, которая выполняет SET NOCOUNT ON, то количество строк, затронутых каждым оператором, не сообщается, а ExecuteNonQuery возвращает -1.

в T-SQL есть переменная @@rowcount, к которой вы можете обратиться, чтобы получить количество строк, затронутых последним оператором.Очевидно, вам нужно было бы получить это сразу после вашего оператора DELETE, но я полагаю, что вы могли бы сделать return @@rowcount в вашем T-SQL, если вы используете SET NOCOUNT ON.

Альтернативой будет возвращать значение какпараметр OUTPUT, особенно если у вас есть пакет из нескольких операторов, и вы хотите знать, на сколько строк влияет каждая.Некоторым людям нравится использовать оператор T-SQL RETURN, чтобы сообщить об успехе / неудаче, поэтому вы можете не возвращать «количество затронутых строк» ​​для согласованности.

0 голосов
/ 28 августа 2010

Используйте переменную среды @@RowCount SQL.Вы можете вернуть его из хранимой процедуры, если используете их.

0 голосов
/ 28 августа 2010

Я полагаю, что вы захотите сделать «подсчет» в операторе удаления, прежде чем выполнить удаление, затем захватить число и манипулировать им при необходимости.

...