【问题标题】:SQL Transaction Report/StatusSQL 事务报告/状态
【发布时间】:2014-03-27 12:07:59
【问题描述】:

我一直在寻找一种方法来获取有关已完成 SQL 事务的信息。由于我使用 C# 连接到数据库,因此我想知道在特定事务期间更新、插入或删除了多少条记录。 有没有办法做到这一点?

提前致谢

【问题讨论】:

  • 我认为你必须使用输出参数

标签: c# sql .net sql-server tsql


【解决方案1】:

ExecuteNonQuery() 返回受影响的行数。

    SqlCommand command = new SqlCommand(queryString, connection);
    command.Connection.Open();
    int rowsAffected = command.ExecuteNonQuery();

如果您想要多条记录,即删除、插入、更新等记录的总数。您必须使用OUTPUT 参数。

        command.Parameters.Add("@DeletedRecords", SqlDbType.Int);
        command.Parameters["@DeletedRecords"].Direction = ParameterDirection.Output;

然后在你的事务存储过程中:

CREATE PROCEDURE [dbo].[TransactionReportStatus]
      @DeletedRecords INT OUTPUT
AS
BEGIN
     -- Your transaction with delete statements
     SET @DeletedRecords = @@ROWCOUNT         
END

@@ROWCOUNT 相当于 SQL Server 中的ExecuteNonQuery()

【讨论】:

    【解决方案2】:

    请注意,在 sql server 中,update 语句影响的行告诉您有多少行符合选择条件,而不是实际更改的行数,而 mysql 返回实际更改的行数。我更喜欢知道实际更改的行数。如果有办法在 sql server 中做到这一点,我想知道如何。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多