我正在尝试将 xml 文件保存到数据库,但是当我尝试为 CallableStatement 设置 CLOB 时,我得到了这个异常:
java.sql.SQLRecoverableException: 10 char of CLOB data cannot be read
当我在 Notepad++ 中查看显示所有符号的文件时,我看不到任何特殊字符。数据库的编码是 AL32UTF8。我怎样才能找到这 10 个无法读取的字符?它绝对不是人们想象的第 10 个字符,因为文件中的第 10 个字符是“s”。第一个字符串:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
代码片段:
CallableStatement cs = con.prepareCall("{ call scenario.add(?,?,?,?,?) }");
cs.registerOutParameter(1, Types.INTEGER);
cs.setLong(2, cfg.getScenarioId());
cs.setString(3, cfg.getType());
cs.setClob(4, new InputStreamReader(new FileInputStream(file), "UTF-8"), (int) file.length());
cs.setString(5, cfg.getFileName());
应用程序在 setClob 上崩溃(如果使用 setCharacterStream(),也会发生同样的情况)。