dポイントプレゼントキャンペーン実施中!

batchInsert処理を行うと正常終了しますが、DBには追加されてiいません。

ConnectionMgr.commitConnection(conn);文が終了後実行されています。

SQL文
public void batchInsertSgnbtuInfo(ArrayList list, String rysnoo, String pgmId, Connection conn) throws DBException, SQLException {

if (list == null || list.size() < 1) {
return;
}
PreparedStatement pstmt = null;
int[] rst = null;
//sql文
StringBuffer sql = new StringBuffer();

sql.append(" INSERT INTO sgnjsk_inf (" +
" kjikminoo, " +
" hnkrrkymd, " +
" untbng, " +
" sgnetyjyn, " +
" sgncod ) " +
" VALUES (?, to_timestamp(?, 'yyyy/MM/dd hh24:mi:ss'), ?, ?, ?);
try {
pstmt = conn.prepareStatement(sql.toString());

//SQL文のパーラメタを設置
for (Iterator it = list.iterator(); it.hasNext();) {
SgnbtujskinfInfo info = (SgnbtujskinfInfo) it.next();
int i = 1;
// VALUES
pstmt.setString(i++, info.getKjikminoo());
pstmt.setString(i++, info.getHnkrrkymd());
// ユニット番号
pstmt.setInt(i++, info.getUntbng());
//資源登録順
pstmt.setInt(i++, info.getSgnetyjyn());
pstmt.setString(i++, info.getSgncod());
pstmt.addBatch();
}
pstmt.executeBatch();

} finally {
if (pstmt != null) {
pstmt.close();
}
}
}
よろしくご教授ください。

A 回答 (3件)

であれば、やはりcommitされていないか、どこかでrollbackされているということぐらいしか思い当たりません・・・


executeBatchではなく、executeUpdateで1件だけInsertした場合はちゃんと登録されるのですよね?
    • good
    • 0

APIに書いてあります。

初心者で知識がないのであれば、まずは検索してみることをおすすめします。
http://docs.oracle.com/javase/jp/6/api/java/sql/ …

戻り値はintの配列なので、そのまま出力しても期待する内容にはなりません。
たとえば、
for (int i = 0; i < result.length; i++) {
System.out.println((i+1) + "つ目の結果:" + result[i]);
}
こんな風にしたら、各SQLでの結果が分かると思います。
出力される値の内容についてはAPIを見てください。

この回答への補足

アドバイスありがとうございます。

配列で戻り値を表示させましたところ、
excecuteBatch return1 = 1
と表示され、1件正常に追加されたことを示しているようです。

しかし、PgAdominでDBの中を見ても、追加されたはずのデータがありません。

この後、どのように調査を進めていけばよろしいでしょうか。

恐れ入りますがよろしくお願いします。

補足日時:2013/08/07 16:04
    • good
    • 0

ConnectionMgrがどのようなクラスなのか分かりませんが、確実にcommitはされているということなのですよね。



まずは、executeBatch()の戻り値を確認してみてはいかがでしょうか。

この回答への補足

ご回答ありがとうございました。
さっそく、executeBatch()の戻り値を確認して見ましたところ、
return = [I@9c6201
が返ってきました。

初心者で、知識がありませんので、申し訳ありませんが、
returnコードの意味と、対応策を教えていただけないでしょうか。

よろしくお願いします。

補足日時:2013/08/07 14:02
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/08/07 10:40

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

関連するカテゴリからQ&Aを探す