プロが教えるわが家の防犯対策術!

UPDATE若しくはINSERTした結果のデータをチェックしてから、コミットするかロールバックするかを判断したいのですが、どうすればよいのでしょうか?
Oracleを使用していてsqlplus上で実行してみるとうまくいくのですが、Javaで実行すると更新前のデータが取れます。
助けてください。
よろしくお願いします。

A 回答 (3件)

別のConnectionからStatementを作成しているとかないですか?


Connectionが違えばトランザクションも別になるので更新前の値が取得されると思います。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
おっしゃられる通り、別のConnectionでStatementを生成してました。
Select文を発行するメソッドにConnectionを渡したら、できましたありがとうございした!

お礼日時:2005/04/27 23:53

普通にできると思います。


#2の方もおっしゃられているように別Connectionの可能性があるので、問題の箇所のソースをある程度提示してはどうでしょうか。
どこかおかしい所があると思います。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
おっしゃる通りでした!
ありがとうございました!

お礼日時:2005/04/27 23:55

う~ん。

無理じゃないですかね。たぶん。
もしかしたらできるかもしれないですけど、自分にはわかりません。

java.sql.StatementのexecuteUpdate(String sql)
は結果として
UPDATE文なら更新した行数
INSERT文なら挿入した行数
をintで返します。
自分はこの返ってきた行数で判断してました。
0行だった場合はロールバックして例外を投げていました。

以上、参考になれば。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
参考になりました!
> UPDATE文なら更新した行数
> INSERT文なら挿入した行数
> をintで返します。
など、次回機会があったら使ってみたいと思います。

お礼日時:2005/04/27 23:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています