2014-02-25 121 views
4

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

在此先感谢

+1

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

回答

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()

1

注意,在SQL影响的更新语句服务器的行会告诉你有多少行满足选择标准,而不是实际更改的行的计数,而mysql则返回实际更改的行数。我更喜欢知道实际更改的行数。如果有一种方法可以在sql server中做到这一点,我想知道如何。