## JavaでSQLを掛けた際にアップデートが効かない
INSERT文を作成してListから値を取得し、addBatchで追加し最後にexecuteBatch()にて処理したいと考えております。
PostgresのCONFLICT句を使用し主キーをセットし、条件として?をセットしています。
executeBatchでCONFLICTキーを使用した日本語の情報なども少なく、困っております。
setする最後にListから登録する主キーを設定
デバックした分単体で実行するとcommitする
SQLException他エラーは発生していない
url = "jdbc:postgresql://xxx.xxx.xxx.xxx:5432/dbname; user = "hogehoke"; password = "hogehoge"; sql = "INSERT INTO tablename (column1, column2, ..........)VALUES(?,?,........) ON CONFLICT(tablename_prikey) DO UPDATE SET tablename_prikey = ?; ~ try{ conn = DriverManager.getConnection(url, user, password); conn.setAutoCommit(false); ps = conn.prepareStatement(sql); for(int k=0;k < List.size(); k++) { ps.setInt(1, List.get(k)); ・ ・ ・ ps.setInt(100, Listget(k)); // CONFLICTのSETキー ps.addBatch(); } int[] cnt = ps.executeBatch(); conn.commit(); System.out.println("SQLの更新件数:"+ cnt.length + "件");
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。