我有一个程序,它逐行读取文件(使用bufferedreader)并将其内容写入Oracle db中的表列大小4000字节。通过oracle的方式,列长度限制为VARCHAR2(4000 BYTE)。我的应用程序在java6中工作正常。但是当我升级到java7时,我遇到了一个奇怪的情况。我在java7中插入时遇到的错误是
ORA-01461: can bind a LONG value only for insert into a LONG column
在列中插入超过4000个字节时会发生此错误。 我正在尝试的文件很大,每个列大小都是1850个字符(包括nonascii字符),而且当我用java7运行这个程序时,每次异常都发生在另一行。 我的问题是java6和java7之间的区别是什么导致此字符串长度差异导致此ORA错误。
编辑澄清:我不是在询问ORA错误,它对我来说已经很清楚了。我的问题是java6-java7之间的区别是什么?因为我可以成功插入java6。
Edit2:代码基本上就是这样。
while ((line = bf.readLine()) != null) {
linenum++;
prpst.setString(1, line);
prpst.addBatch();
if (++batchedLines == 200) {
prpst.executeBatch();
batchedLines = 0;
prpst.clearBatch();
}
}