我正在使用 TADOQuery 组件执行 SQL UPDATE 语句,并希望检查已更新的行数。UPDATE 语句执行良好,并且相应地修改了行,但 .RowsAffected 属性始终返回 -1。文档状态 -1 表示该语句有错误,但正如我所说,它执行得很好。我尝试在语句前加上 SET NOCOUNT OFF 但这没有任何区别。我的代码如下:
var
adoUpdateQuery: TADOQuery;
blnUpdatedOK: Boolean;
begin
adoUpdateQuery := TADOQuery.Create(nil);
adoUpdateQuery.DisableControls;
adoUpdateQuery.Connection := adcMiddleTierDB;
adoUpdateQuery.ExecuteOptions := [eoExecuteNoRecords];
adoUpdateQuery.SQL.Text := 'UPDATE MyTable SET Status = 1 WHERE Status = 0';
try
adoUpdateQuery.ExecSQL;
blnUpdatedOK := (adoUpdateQuery.RowsAffected > 0);
我正在使用 Delphi XE2,连接到 MS SQL Server 2008R2。