Преобразование CLOB в двоичный поток

#java #sql #string #clob

#java #sql #строка #clob

Вопрос:

Как преобразовать данные Clob в двоичный поток?

На данный момент я могу найти его в 2 шага: 1 -> CLOB в строку 2 —> Строка в двоичный поток.

Я вызываю пакет SQL, который имеет 1 ввод / вывод и 2 вывода / вывода, и присваиваю вывод CLOB некоторой переменной XYZ, пример показан ниже…

 Clob XYZ=null;
CallableStatement CalSmt = null;
InputStream ABC = null;
try
{
 CalSmt = conn.prepareCall("{call package(?,?,?)}");
 CalSmt.registerOutParameter(1,OracleTypes.CLOB);
 CalSmt.registerOutParameter(2,OracleTypes.INTEGER);
 CalSmt.setString(3,"315141");
 CalSmt.execute();
 XYZ = CalSmt.getClob(1);
 ABC= **XYZ.getBinaryStream();** <---- this is showing me a error as 'Method "getBinaryStream" not found'
}
  

Здесь XYZ содержит данные CLOB, которые необходимо преобразовать в двоичный поток и сохранить в ABC для дальнейших ссылок. Пожалуйста, помогите мне, предоставив один метод для этого, пожалуйста. Заранее спасибо.

Ответ №1:

Да, нет никакого getBinaryStream метода Clob , потому что не имеет смысла, чтобы он был. Clob — это символьные данные, а не двоичные данные. Запрашивать двоичный поток у clob не имеет больше смысла, чем запрашивать у blob-объекта поток символов.

Честно говоря, ваш подход к преобразованию в строку кажется мне разумным, если вам действительно нужно это преобразование. Было бы лучше, если бы вы могли просто избежать этого — если вы храните двоичные данные, используйте blob и InputStream везде. Если вы храните символьные данные, используйте clob и Reader везде.