返回受 SQL UPDATE 语句影响的行 [重复]

Posted

技术标签:

【中文标题】返回受 SQL UPDATE 语句影响的行 [重复]【英文标题】:Returning rows affected from an SQL UPDATE statement [duplicate] 【发布时间】:2013-01-08 10:12:44 【问题描述】:

可能重复:SQL: Update a row and returning a column value with 1 queryGet affected rows on ExecuteNonQuery

我有一个文本框,用户可以在其中输入他们的 SQL 查询。

示例查询可能是:

UPDATE customer SET isnew = 1;

运行上述查询更新 4 行,我如何获得 SQL Server 返回的 '4 rows affected' 消息。

我尝试过使用InfoMessage,但这只会返回诸如'Changed database context to 'databasenamehere'之类的消息,而不是实际受影响的行。

【问题讨论】:

希望您正在清理您的用户输入的查询!另外:如果您使用command.ExecuteNonQuery() 运行查询;返回值是执行的SQL语句影响的行数 你是如何在 C# 中运行查询的? 要在 C# 中运行我的 SQL,我使用 dataAdapter.Fill(dataSet),然后将数据集分配给 GridViews,因此不能使用命令中的 recordsAffected.ExecuteNonQuery 【参考方案1】:

SqlCommand.ExecuteNonQuery 返回影响的记录数为int

var command = new SqlCommand("UPDATE customer SET isnew = 1;", conn);
int recordsAffected = command.ExecuteNonQuery();

【讨论】:

见上文,不能使用它,因为我正在使用 dataAdapter.Fill(dataSet) 从我的 sql 查询中获取结果... 你是如何执行 UPDATE 语句的?例如,DataAdapter.Update 还返回受影响的行数。 我正在使用dataAdapter.Fill(dataSet) 来触发我的 UPDATE 语句,sql 语句可能包含几个 UPDATES 和 SELECTS,任何 SELECTS 都分配给 GridView @bluenose1970 Fill 使用适配器的SelectCommand,而不是UpdateCommand。您无法使用Fill 更新数据库。如果您的意思是“刷新”数据集,那么 Fill 还会以 int 形式返回受影响的记录数:int recordsAffected = dataAdapter.Fill(dataSet);【参考方案2】:

它不会收到你想要的消息,但这会得到相同的计数:

    declare @RC int
(your statement here)
SELECT @RC = @@ROWCOUNT

这将为您提供语句的行数。

【讨论】:

以上是关于返回受 SQL UPDATE 语句影响的行 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

PHP PDO Update语句总是返回0行受影响的rowCount()

通过 RAW plpgsql 中的 UPDATE 语句获取受影响的行

mysql update语句的一个知识点说明

PDO中执行SQL语句

2017年7月27~~~

在 UPDATE 查询中使用 DateTime 或字符串参数时,Informix 11.7 返回 -1 作为受影响的行数