Страницы

Поиск по вопросам

воскресенье, 12 января 2020 г.

Как blob.sql конвертировать на String

#java #jdbc #extjs


Есть вывод с базы JDBC, и там прописан код

                   str += ("[" +
                    "'" + rs.getInt("ID") + "', " +
                    "'" + rs.getString("NAME") + "',  " +
                    "'" + rs.getString("TYPE") + "',  " +
                    "'" + rs.getString("DATA") + "', " +
                    "'" + rs.getBlob("MESSAGE") + "', " +
                    "'" + rs.getInt("ID2") + "', " +
                    "'" + rs.getString("NAMEDOCUMENT") + "', " +
                    "'" + rs.getInt("ID1") + "', " +
                    "'" + rs.getString("STATUS") +
                    "'],");


поля Message у меня типа blob, и когда я принимаю его в Ext JS то value у него ссылка
на объект как конвертировать что бы на Ext JS выходило значения ??
    


Ответы

Ответ 1



BLOB (binary large object) — это двоичные данные неспецифицированного формата. Не очень понятно, почему у вас Message (вероятно, текстовые данные) хранятся в виде BLOB. Для больших текстовых данных должен использоваться тип CLOB (character large object). Если вы хотите вывести содержимое BLOB, интерпретируя его, как текст, вам надо знать, в какой кодировке этот текст был туда записан. Предположим, UTF-8. Тогда можно сделать так: // ограничим максимальную длину блока данных, чтобы память не кончилась int LENGTH_LIMIT = 100_000; Blob blob = rs.getBlob("MESSAGE"); long length = blob.length(); // а лучше кидать исключение, если неожиданно слишком большая длина if(length > LENGTH_LIMIT) length = LENGTH_LIMIT; byte[] data = blob.getBytes(0, (int)length); String message = new String(data, StandardCharsets.UTF_8); // теперь используйте message В заключение скажу, что формировать JSON конкатенацией строк очень плохо. Вы сильно попадёте на первой одинарной кавычке внутри текста сообщения. Есть много готовых библиотек для того, чтобы сделать это быстро и безопасно.

Комментариев нет:

Отправить комментарий