Java 6和Java 7之间的字符串长度差异

时间:2015-06-24 09:11:42

标签: java string oracle encoding

我有一个程序,它逐行读取文件(使用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();
            }
        }

0 个答案:

没有答案