我不太确定混合使用JDBC和Oracle批处理......我读到我不能将它混合在preparedStatment
的一个实例上...因为:Oracle Update Batching Models - Using both batching models in same application
但我也发现一些事情,即即使在一个应用程序中它也不能混合...... http://docs.oracle.com/cd/B10500_01/java.920/a96654/oraperf.htm
所以我知道我不确定问题出在哪里......
我在每个函数调用中创建一个新的准备好的语句:
public void functionCall(int Id)
PreparedStatement insStm = null;
String featureName = "";
String featureTypeName = "";
String sql = "BEGIN insert into " + TABLE_FEATURE_INSET + " values (?, ?, ?, ?); EXCEPTION WHEN others THEN IF SQLCODE != -1 THEN RAISE; END IF; END;";
insStm = getConnection().prepareStatement(sql);
for(xxx)
for (yyy) {
for (zzz) {
insStm.setObject(1, TypeName);
insStm.setObject(2, tableName);
insStm.setObject(3, sourceId);
insStm.setObject(4, Id);
insStm.addBatch();
}
}
// per feature
insStm.executeBatch();
}
statement .close();
}
然后我有时会收到错误......:
引起:java.sql.SQLException:不允许操作:操作 不能与Oracle风格的批处理混合使用
prepareStatment
可能是来自同一连接的问题?我真的不确定这个。
有人能帮助我吗?感谢
修改 该错误是由此调用引起的:insStm.addBatch();