• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:正常終了するが追加されない)

SQL文のバッチ処理で正常終了するが追加されない

このQ&Aのポイント
  • バッチ処理を行っても、正常終了するがDBには追加されていない。
  • ConnectionMgr.commitConnection(conn);文が実行されているが、追加が反映されていない。
  • 質問文章には、バッチ処理でのSQL文の実装があり、バッチ処理が正常に実行されるものの、DBへの追加が反映されていない状況が起こっている。

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

  • ベストアンサー
  • yamada_g
  • ベストアンサー率68% (258/374)
回答No.3

であれば、やはりcommitされていないか、どこかでrollbackされているということぐらいしか思い当たりません・・・ executeBatchではなく、executeUpdateで1件だけInsertした場合はちゃんと登録されるのですよね?

その他の回答 (2)

  • yamada_g
  • ベストアンサー率68% (258/374)
回答No.2

APIに書いてあります。初心者で知識がないのであれば、まずは検索してみることをおすすめします。 http://docs.oracle.com/javase/jp/6/api/java/sql/Statement.html#executeBatch() 戻り値はintの配列なので、そのまま出力しても期待する内容にはなりません。 たとえば、 for (int i = 0; i < result.length; i++) { System.out.println((i+1) + "つ目の結果:" + result[i]); } こんな風にしたら、各SQLでの結果が分かると思います。 出力される値の内容についてはAPIを見てください。

Horirin39
質問者

補足

アドバイスありがとうございます。 配列で戻り値を表示させましたところ、 excecuteBatch return1 = 1 と表示され、1件正常に追加されたことを示しているようです。 しかし、PgAdominでDBの中を見ても、追加されたはずのデータがありません。 この後、どのように調査を進めていけばよろしいでしょうか。 恐れ入りますがよろしくお願いします。

  • yamada_g
  • ベストアンサー率68% (258/374)
回答No.1

ConnectionMgrがどのようなクラスなのか分かりませんが、確実にcommitはされているということなのですよね。 まずは、executeBatch()の戻り値を確認してみてはいかがでしょうか。

Horirin39
質問者

お礼

ご回答ありがとうございます。 executeBatch()の戻り値を確認して見ます。

Horirin39
質問者

補足

ご回答ありがとうございました。 さっそく、executeBatch()の戻り値を確認して見ましたところ、 return = [I@9c6201 が返ってきました。 初心者で、知識がありませんので、申し訳ありませんが、 returnコードの意味と、対応策を教えていただけないでしょうか。 よろしくお願いします。

関連するQ&A