プリペアドステートメントでの複数テーブル同時INSERTについて、悩んでおりますのでご教示ください。
例えば、下記のような2つのテーブル
テーブル名[model_0]
ID = [0,1,2,3]
NAME = [a,b,c,d]
テーブル名[model_1]
ID = [0,1,2]
ADDRESS = [x,y,z]
があったとして、このように要素数が違うテーブルをPreparedStatementで同時に更新する事は可能なのでしょうか?
下のようなSQL文を作成し、実装してみましたが、
for文で回した時に4周目で要素数が違う為エラーになります。
パラメータを指定しない方法等はないのでしょうか?
もしくはSQL文の記載がよくないのか、そのあたりアドバイスいただければ幸いです。
sql = "INSERT ALL " + "INTO model_0(ID,NAME) VALUES(?,?) "
+ "INTO model_1(ID,ADDRESS) VALUES(?,?) "
** + "SELECT * FROM DUAL";
Connection conn = DriverManager
.getConnection(hoge,hoge,hoge)
PreparedStatement pstmt = conn.prepareStatement(sql);
for (int i = 0; i < hoge; i++) {
if (model_0.getSize() > 0) {
pstmt.setInt(1, i);
pstmt.setString(2, model_0.getElementAt(i));
pstmt.setInt(3, i);
pstmt.setString(4, model_1.getElementAt(i));
pstmt.addBatch();
}
pstmt.executeBatch();
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。