我一直在寻找获取有关已完成的SQL事务的信息的方法。由于我使用C#连接到数据库,因此我想知道在特定事务期间有多少记录被更新,插入或删除。 有没有办法做到这一点?
提前致谢
答案 0 :(得分: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 :(得分:1)
请注意,在sql server中,对update语句有影响的行会告诉您有多少行符合选择条件,而不是实际更改的行数,而mysql则返回实际更改的行数。我更喜欢知道实际更改的行数。如果有办法在sql server中这样做,我想知道如何。