我使用C#程序,我的数据库在SQL Server 2008中。
当用户从数据库中删除了一些行时,我想在windows应用程序中显示他/她删除了多少行。
我想知道如何向C#发送SQL消息并将其显示给用户。 例如,当我从表中删除4行时,SQL显示消息(如4行(s)受影响)。现在我想将4号发送到我的C#程序。我该怎么做?谢谢。
答案 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语句报告成功/失败,因此您可能希望避免返回“受影响的行数”以保持一致性。