У меня очень странная проблема с правильным получением данных, хранящихся в столбце XMLType, через getAsciiStream (). Мои XML-файлы (извлеченные из базы данных Oracle Oracle 11g Enterprise Edition Release 11.2.0.2.0 - 64bit) имеют размер больше 32 КБ.
Я использую Java 1.5.0_22 и драйвер JDBC ojdbc5.jar.
Если я получаю XML только с одним циклом чтения, я теряю один символ на 32 000-й позиции.
Если я получаю XML со вторым циклом чтения, через этот последний, я могу получить его правильно : очень странно.
Ты хоть представляешь, почему это происходит?
Заранее спасибо!
Это мой код:
while (resultSet.next() && resultSet.getObject(2) != null) {
lastId = resultSet.getInt(1);
stmtA.setInt(1, lastId);
// FIRST CYCLE - LOSING 1 CHARACTER
inputSB2 = new StringBuffer();
reader2 = new BufferedReader(resultSet.getCharacterStream(2));
String inputLine2;
while (true) {
inputLine2 = reader2.readLine();
if (inputLine2 == null) break;
inputSB2.append(inputLine2.replaceAll("\u0000", ""));
}
// SECOND CYCLE - PERFECT
inputSB = new StringBuffer();
reader = new BufferedReader(new InputStreamReader(resultSet.getAsciiStream(2)));
String inputLine;
while (true) {
inputLine = reader.readLine();
if (inputLine == null) break;
inputSB.append(inputLine.replaceAll("\u0000", ""));
}
// Example Output - ID: 666712 LengthString1: **244514** LengthString2: **244513**
System.out.println("ID: " + lastId + " LengthString1: " + inputSB.toString().length() + " LengthString2: " + inputSB2.toString().length());
stmtA.setStringForClob(2, inputSB.toString());
stmtA.executeUpdate();
}