update文の更新件数を取得するには?

解決


MrChin  2014-01-31 19:26:39  No: 45980

みなさんにはいつもお世話になっています。さて現在SQL文を勉強しているのですがupdate文を使った際、何件更新されたか知る方法はないでしょうか?御教授お願いします。
  
procedure TFkinninsyou.Button1Click(Sender: TObject);
var
  s :Strring;
begin
  s :='update DATA set FIELD1 =100 where MAINKEY =1';
  ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add(lsql); ADOQuery1.ExecSQL;
end;

↑この処理の更新された件数を知りたいのです。


ありい  2014-01-31 21:39:43  No: 45981

MrChinさん、こんにちは。

  バージョン、DBサーバ不明ですが。

[D7Helpより]
> ExecSQL は,実行した SQL 文の影響を受ける行数を反映した整数値を返します。

  ...なので、下記で件数が返って来ると思います。

nCount := ADOQuery1.ExecSQL;

  DBサーバによっては返さないのもあるかもしれません。その場合は問い合わせで、投げるSQLのwhere文を同じにして件数を取得するしかないと思われます。

select count(*) from DATA where MAINKEY =1


あだち  2014-02-01 02:46:08  No: 45982

TADOQueryでは、ExecSQLのあとに  RowsAffected Propertyで更新件数が確認できるようです。


MrChin  2014-02-03 17:42:07  No: 45983

あだちさん、ご丁寧に有難う御座います。2通りのパターンとも出来ました。

以前はselect count(*) from DATA where MAINKEY =1等で件数を確認し、0件の場合はinsert文を使っていました。プログラム文が長くなるしselect文をかける為処理速度が遅くなります。これで解決出来ました。どうもです!


MrChin  2014-02-03 17:43:24  No: 45984

解決チェック忘れていました(笑)


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加