Читать ячейку с помощью getBinaryStream - PullRequest
0 голосов
/ 05 октября 2011

В моей таблице базы данных есть столбец1 с типом varchar2.Я читаю этот столбец из Java

 java.sql.ResultSet r = s.executeQuery("Select * from table1");
 InputStream  is = r.getBinaryStream("column1");

Я делаю что-то после этого кода.Но я не смог прочитать целое значение

Ниже текста находится моя строка.

"Вызывается скрытое семантическое индексирование из-за его способности сопоставлять семантически связанные термины, которые скрыты в коллекции текстаВпервые он был применен к тексту в Bell Laboratories в конце 1980-х годов. Этот метод, также называемый скрытым семантическим анализом (LSA), раскрывает скрытую семантическую структуру, лежащую в основе использования слов в теле текста, и то, как его можно использовать дляизвлекать значение текста в ответ на пользовательские запросы, обычно называемые концептуальными поисками. Запросы или концептуальные поиски по набору документов, прошедших БИС, будут возвращать результаты, концептуально сходные по значению с критериями поиска, даже еслирезультаты не разделяют определенное слово или слова с критериями поиска. "

Но я мог прочитать только эту его часть

Вызывается скрытое семантическое индексирование из-за егоспособность соотносить семантически связанные термины

Почему я не мог прочитать все это?

1 Ответ

1 голос
/ 05 октября 2011

Очевидно, вы не полностью читаете InputStream. Распространенной ошибкой новичка является предположение, что InputStream#available() возвращает длину потока, а затем считывается только то количество байтов. Это не правильно. Вам нужно прочитать его полностью, пока метод InputStream#read() не вернет -1. См. Также Учебник по Java IO . Другая возможная причина заключается в том, что текст содержит символы новой строки, и вы используете BufferedReader#readLine(), чтобы прочитать его, и он вызывается только один раз. Это тоже не правильно. Вы должны вызывать его в цикле, пока он не вернет null.

Но так как это поле varchar, почему бы вам просто не использовать ResultSet#getString()?

String column1 = r.getString("column1");
...