我正在尝试将大量数据从一个表插入到另一个表中。这两张表位于不同的地区。当我插入数据时,ID(我用来创建连接)能够插入较少行数的数据。如果它插入超过500行的数据,则抛出异常
com.ibm.db2.jcc.b.SqlException:DB2 SQL错误:SQLCODE:-551,SQLSTATE:42501,SQLERRMC:DB2GCS; EXECUTE PACKAGE; NULLID.SYSLH203。
如果数据更多,我无法找到为什么它显示相同ID的授权例外。
My Code Snippet :
while(RSet.next()){
stmt=test_conn.prepareStatement("Insert Query");
for(int i=1;i<=columnCount;i++){
stmt.setString(i,RSet.getString(i));
}
stmt.addBatch();;
}
stmt.executeBatch();
先谢谢您的帮助。
答案 0 :(得分:1)
您的代码实际上没有正确批处理,这可能是它破坏的原因。问题是你不必要地一遍又一遍地准备插入查询。
你需要在循环之外准备一次,如
test_conn.setAutoCommit(false);
stmt = test_conn.prepareStatement("INSERT INTO ...");
while(RSet.next()){
for(int i = 1; i <= columnCount; i++){
stmt.setString(i, RSet.getString(i));
}
stmt.addBatch();
}
stmt.executeBatch();
test_conn.commit();