Java 针对oracle的jdbc批处理更新

Java 针对oracle的jdbc批处理更新,java,oracle,jdbc,Java,Oracle,Jdbc,我正在使用executeBatch()将数据插入oracle。我面临的问题只发生在一张桌子上。如果批处理大小为1000,则会得到ArrayIndexOutOfBoundException,但如果批处理大小为500,则效果良好。这种情况只发生在一个表中,该表大约有38列,包含原始数据、nvarchar数据、varchar数据和数字数据,对于所有其他表,它都可以正常工作 那个么这批货的大小有什么限制吗?还是我做错了什么 if(counter==500) { try{

我正在使用executeBatch()将数据插入oracle。我面临的问题只发生在一张桌子上。如果批处理大小为1000,则会得到ArrayIndexOutOfBoundException,但如果批处理大小为500,则效果良好。这种情况只发生在一个表中,该表大约有38列,包含原始数据、nvarchar数据、varchar数据和数字数据,对于所有其他表,它都可以正常工作

那个么这批货的大小有什么限制吗?还是我做错了什么

if(counter==500)
{
            try{

                log.info("trying to execute batch with"+counter);
                int done[]=rowInsertStmt.executeBatch();
                rowInsertStmt.clearBatch();
                conn.commit();
            }
            catch(Exception e)
            {
                log.info("error while executing batch with counter"+counter);
            }
            counter=0;
            log.info("executed batch "+counter);

}else if(counter<500)
{
            rowInsertStmt.addBatch();
            counter++;
}
if(计数器==500)
{
试一试{
log.info(“尝试使用“+计数器”执行批处理);

int done[]=rowInsertStmt.executeBatch(); rowInsertStmt.clearBatch(); conn.commit(); } 捕获(例外e) { log.info(“使用计数器“+计数器执行批处理时出错”); } 计数器=0; 日志信息(“已执行批次”+计数器);
}否则如果(计数器)报告了哪行代码中的
ArrayIndexOutOfBoundException
异常?int done[]=rowInsertStmt.executeBatch();请提供您的驱动程序版本?Oracle似乎存在与此相关的错误。我通过下载最新的jar版本再次使用odbc6瘦驱动程序,或者您可能必须限制批处理大小。!