显示已删除的行数

时间:2010-08-27 20:42:25

标签: c# visual-studio-2008

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

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

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

4 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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

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

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