#java #jdbc #inputstream
#java #jdbc #входной поток
Вопрос:
В моей таблице базы данных у меня есть столбец типа varchar211 . Я прочитал этот столбец из java
java.sql.ResultSet r = s.executeQuery("Select * from table1");
InputStream is = r.getBinaryStream("column1");
Я что-то делаю после этого кода. Но я не смог прочитать целое значение
Под текстом находится моя строка.
«Называемое скрытым семантическим индексированием из-за его способности сопоставлять семантически связанные термины, скрытые в наборе текста, оно впервые было применено к тексту в Bell Laboratories в конце 1980-х годов. Метод, также называемый скрытым семантическим анализом (LSA), раскрывает скрытую семантическую структуру, лежащую в основе использования слов в тексте, и то, как ее можно использовать для извлечения смысла текста в ответ на запросы пользователя, обычно называемые поиском концепций. Запросы или концептуальный поиск по набору документов, прошедших LSI, будут возвращать результаты, концептуально похожие по смыслу на критерии поиска, даже если в результатах нет определенного слова или слов, совпадающих с критериями поиска. «
Но я мог прочитать только эту ее часть
Называется скрытым семантическим индексированием из-за его способности сопоставлять семантически связанные термины
Почему я не смог прочитать ее целиком?
Ответ №1:
Очевидно, вы не полностью читаете InputStream
. Распространенной ошибкой новичков является предположение, что InputStream#available()
возвращает длину потока, а затем считывается только это количество байтов. Это неверно. Вам нужно прочитать ее полностью, пока InputStream#read()
метод не вернется -1
. См. Также Руководство по вводу-выводу Java. Другая возможная причина заключается в том, что текст содержит новые строки, и вы используете BufferedReader#readLine()
его для чтения, и он был вызван только один раз. Это тоже неверно. Вам нужно вызывать ее в цикле, пока она не вернется null
.
Но поскольку это varchar
поле, почему бы вам просто не использовать ResultSet#getString()
?
String column1 = r.getString("column1");
Комментарии:
1. Я использую библиотеку и метод, который я использую, принимая параметр в качестве InputStream , поэтому я должен использовать Inputstream.
2. Сообщите об этом как об ошибке сопровождающим библиотеки, чтобы они исправили ее.
3. Хорошо, тогда как я должен использовать InputStream? Не могли бы вы привести мне пример?
4. Я уже ответил на это. Читайте, пока
read()
метод не вернется-1
. Я даже дал ссылку на учебное пособие по Java IO.