【发布时间】:2011-11-03 23:18:19
【问题描述】:
使用 JDBC (Oracle) 我需要在两个表中的每一个中插入大约一千行。像这样的:
"INSERT INTO TABLE_A (A_ID, A_NAME, A_LAST_NAME) VALUES (MY_SEQUENCE.NEXTVAL, ?, ?)";
"INSERT INTO TABLE_B (B_ID, B_DESCRIPTION) VALUES (MY_SEQUENCE.CURRVAL, ?)";
问题是两个表是通过公共顺序连接的,所以语句的顺序很重要。
如果我只有一张桌子,那就很容易了。在那种情况下,我使用了代码:
String insert = "Insert into TABLE_A(A_ID, A_NAME, A_LAST_NAME) values(MY_SEQUENCE.NEXTVAL, ?, ?)";
conn.setAutoCommit(false);
PreparedStatement ps = conn.prepareStatement(insert);
for(MyObject obj : myCollection) {
ps.setString(1, obj.getName());
ps.setString(2, obj.getLastName());
ps.addBatch();
}
ps.executeBatch();
conn.commit();
ps.close();
但是这种方法只能使用一个准备好的语句,因此只能使用一个插入。我该如何解决这个问题?
【问题讨论】:
标签: java jdbc prepared-statement