显示已删除的行数

我使用C#程序,我的数据库在SQL Server 2008中。

当用户从数据库中删除一些行时,我想在windows应用程序中显示他/她删除了多少行。

我想知道如何将SQL消息发送到C#并为用户显示它。 例如,当我从表中删除4行时,SQL显示消息(如4行(s)受影响)。 现在我想将4号发送到我的C#程序。 我该怎么做? 谢谢。

如果从.NET应用程序使用SqlCommand执行删除/更新,则ExecuteNonQuery()的结果将返回受命令的最后一个语句影响的行数。

请参阅http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executenonquery.aspx 。

我想你会想要在发出删除之前对delete语句执行select“count”,然后捕获数字并根据需要对其进行操作。

使用@@RowCount SQL环境变量。 如果您正在使用存储过程,则可以从存储过程返回它。

如果您正在使用System.Data.SqlClient.SqlCommand.ExecuteNonQuery方法或System.Data.Common.DbCommand.ExecuteNonQuery方法,则返回值应该是您的语句所影响的行数(命令中的最后一个语句,我认为)。

有一点需要注意……如果执行SET NOCOUNT ON的批处理或存储过程,则不会报告每个语句影响的行数,而ExecuteNonQuery将返回-1。

在T-SQL中,有一个@@rowcount变量,您可以访问@@rowcount变量以获取受最后一个语句影响的行数。 显然你需要在DELETE语句之后立即获取它,但我相信如果你使用SET NOCOUNT ON ,你可以在你的T-SQL中return @@rowcount

替代方法是将值作为OUTPUT参数返回,特别是如果您有一批多个语句并且您想知道每个语句有多少行受影响。 有些人喜欢使用T-SQL RETURN语句报告成功/失败,因此您可能希望避免返回“受影响的行数”以保持一致性。