| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > метод "getBlob", пакет java.sql |
| Автор: Гость_Max 7.10.2003, 17:45 |
| Всем добрый день. Вопрос такой. В базе данных «mySQL», нужно сохранить текст, где-то на 1000 символов. Я пробовал создавать колонку типа «Blob», или типа «Text». Как мне достать этот текст? Что я сделал: String s1 = rs.getBlob(“column_name”).toString(); Ошибку не выдает, но и текст не показывает, выдает что-то вроде названия объекта. |
| Автор: Sun 7.10.2003, 18:36 |
| Тебе наверно лучше получить InputStream через метод getBinaryStream() а затем вычитать данные из потока. |
| Автор: DarkDS 8.10.2003, 12:34 |
| .toString(); - Выдает дебаговую информацию. Если этот метод не переопределен, чтобы выдавать осмысленную информацию, то, по дефолту, он выдает название инстанса (то есть имя объекта и его адресс в памяти JVM) |
| Автор: DarkDS 8.10.2003, 12:37 |
| Если тект создан, то можешь достать rset.getString("column_name") для типа текст... Блоб - это байтовая информация... Обычно используется для хранения картинок и тд и тп... |
| Автор: Гость_Max 11.10.2003, 19:37 |
| Может кому пригодится…, демонстрирую последнюю версию как достать текст записанный в виде объекта Blob в базе mySQL (Текст больше 250 символов): /********************************************/ String g7; BufferedReader in = new BufferedReader(new InputStreamReader(rs.getBinaryStream("Column_name"))); String line; StringBuffer ttt = new StringBuffer(); try{ while((line = in.readLine()) !=null){ttt.append(line);} g7 = ttt.toString(); }catch(IOException ioe){} finally{in.close();} /*******************************************/ Хорошая ссылка по этому вопросу: http://www.asmodeus.com.ua/library/java/JDBC/resultset.doc.htm Теперь где можно наступить на грабли С помощью ResultSet возможно получать очень большие данные типа LONGVARBINARY или LONGVARCHAR. Методы getBytes и getString возвращают эти данные в виде одного большого куска (вплоть до пределов, которые можно узнать с помощью метода Statement.getMaxFieldSize). Тем не менее, может оказаться удобнее считывать очень большие данные небольшими кусками. Это делается с помощью потоков (java.io.InputStream), которые возвращаются некоторыми методами ResultSet. Обратите внимание на то, что к этим потокам надо обращаться сразу, так как они будут закрыты при следующем вызове getXXX объекта ResultSet. (Такое поведение диктуется низкоуровневой реализацией доступа к большим двоичным объектам) Спасибо всем за участие. |