CDatabaseのExecuteSQLメソッドを使用して、UPDATE/DELETEを実施した場合、
更新/削除件数を知る方法はありますか?
(CDaoDatabaseのGetRecordsAffectedメソッドに相当するものが無さそうなので)
UPDATE/DELETEで条件を指定してExecuteSQLを発行するため、
条件に一致するレコードが存在し、更新/削除件数が1件以上あるのか、
条件に一致するレコードが無く、更新/削除件数が0件なのか知りたいのです。
よろしくお願いします。
恐らくは無いです。
CDatabaseクラスはSQLXxxx()をラッピングしているようです。
ステートメントで影響を受けた行カウントを取得するには
SQLRowCount(SQLHSTMT)を使用しますが、CDatabase::ExecuteSQL()内で
SQLHSTMTの確保と解放を同時に行っているようです。
やったことが無いのでできるかは不明ですが、CDatabase::m_hdbcにより
データベース操作の基となるハンドルが返りますので、ExecuteSQL()と
同様のルーチンを書いて、SQLHSTMTを解放する前にSQLRowCount()をコールする、
という方法ならばできるカモしれません。
追加です。
参考資料を以下に記します。
>> Determining the Number of Affected Rows
> http://msdn2.microsoft.com/en-us/library/ms710185(VS.85).aspx
>玲音 (st.lain)さん
ご回答ありがとうございます。そして返信遅くなり申し訳ありません。
やはりCDatabaseの機能としては、更新件数を取得する方法はなさそうですね。
今回は「CDatabeseの機能で簡単に取得できれば使用したい」というレベルでしたので、
「CDatabeseでは取得できない」ということが解ったことで解決とさせて頂きます。
但し、ご提示頂いた内容も大変興味がありますので、時間のあるときに確認して
再度ご報告させて頂きます。