• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:setAutoCommit(false)で例外発生してしまいます)

setAutoCommit(false)で例外発生してしまいます

このQ&Aのポイント
  • Javaの簡単なスタンドアロンアプリケーションでsetAutoCommit(false)を使用すると、例外が発生します。
  • サポートされていないプロバイダがトランザクションを原因としている可能性があります。
  • 開発環境では正常に動作しているため、原因を特定できずに困っています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

参考的な意見しか言えないのですが、何か環境の差異はありませんか?。 単純なエラーほど単純な見落としが良くあります(経験上)。 ODBCの設定、Java、OS、JDBC-ODBCブリッジのバージョン等、比べられることが良いと思います。 awtを使われているようですが、古いJavaで使われているのでしょうか?。 であれば、その世代の最新のJavaVMでやってみるのも良いかもしれません。 または、MSのODBCの日付のちょっと後のJava辺りが良いかもしれません。

fswmiyajim
質問者

お礼

ご回答ありがとうございます! >参考的な意見しか言えないのですが、何か環境の差異はありませんか?。 これが原因でした! 端末A(問題無い)と端末B(問題発生)のマシン環境は同一で、jdkも1.6.0_18(安定最新は1.6.0_19みたいですね)なのですが、 端末Aのユーザーと端末Bのユーザーの権限の違いが問題になっていました。 具体的には、Bのユーザーは権限の関係で更新用コネクション取得後に、 一度あるテーブルを読みにいってから、トランザクションを開始します。 一方、Aのユーザー(私)は権限が無いのですぐにトランザクションを開始します。 そのような違いがありました。この場合ですと、トランザクション開始前にデータを読んでいるか読んでいないかの違いとなります。 それが問題なのかと思い、トランザクション開始前に行っていた処理をトランザクションの中に入れ込むと、 無事例外発生する事無くどの端末からでも動作するようになりました! >awtを使われているようですが、古いJavaで使われているのでしょうか?。 GUIにswingを使用しているので、内部的にはawtが呼ばれているはずです。 尚、本文中で接続にojdbc14を使用していると書いていましたが、 誤解を招いたかもしれません。申し訳ありません。 oracleの更新をaccessにプッシュする様なプログラムの為、必要ではありますが、 今回の問題・質問には関係の無い部分でした。 おかげさまで問題の解決に至りました。ありがとうございました!

関連するQ&A