CDatabase ExecuteSQLメソッドについて – プログラミング – Home

通知
すべてクリア

[解決済] CDatabase ExecuteSQLメソッドについて


いうら
 いうら
(@いうら)
ゲスト
結合: 17年前
投稿: 2
Topic starter  

CDatabaseのExecuteSQLメソッドを使用して、UPDATE/DELETEを実施した場合、
更新/削除件数を知る方法はありますか?
(CDaoDatabaseのGetRecordsAffectedメソッドに相当するものが無さそうなので)

UPDATE/DELETEで条件を指定してExecuteSQLを発行するため、
条件に一致するレコードが存在し、更新/削除件数が1件以上あるのか、
条件に一致するレコードが無く、更新/削除件数が0件なのか知りたいのです。

よろしくお願いします。


引用未解決
トピックタグ
玲音 (st.lain)
 玲音 (st.lain)
(@玲音 (st.lain))
ゲスト
結合: 17年前
投稿: 89
 

恐らくは無いです。

CDatabaseクラスはSQLXxxx()をラッピングしているようです。
ステートメントで影響を受けた行カウントを取得するには
SQLRowCount(SQLHSTMT)を使用しますが、CDatabase::ExecuteSQL()内で
SQLHSTMTの確保と解放を同時に行っているようです。

やったことが無いのでできるかは不明ですが、CDatabase::m_hdbcにより
データベース操作の基となるハンドルが返りますので、ExecuteSQL()と
同様のルーチンを書いて、SQLHSTMTを解放する前にSQLRowCount()をコールする、
という方法ならばできるカモしれません。


返信引用
玲音 (st.lain)
 玲音 (st.lain)
(@玲音 (st.lain))
ゲスト
結合: 17年前
投稿: 89
 

追加です。

参考資料を以下に記します。

>> Determining the Number of Affected Rows
> http://msdn2.microsoft.com/en-us/library/ms710185(VS.85).aspx


返信引用
いうら
 いうら
(@いうら)
ゲスト
結合: 17年前
投稿: 2
Topic starter  

>玲音 (st.lain)さん

ご回答ありがとうございます。そして返信遅くなり申し訳ありません。

やはりCDatabaseの機能としては、更新件数を取得する方法はなさそうですね。
今回は「CDatabeseの機能で簡単に取得できれば使用したい」というレベルでしたので、
「CDatabeseでは取得できない」ということが解ったことで解決とさせて頂きます。

但し、ご提示頂いた内容も大変興味がありますので、時間のあるときに確認して
再度ご報告させて頂きます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました