返回受 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 语句获取受影响的行
在 UPDATE 查询中使用 DateTime 或字符串参数时,Informix 11.7 返回 -1 作为受影响的行数