2014-02-25 157 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中做到這一點,我想知道如何。