Почему я не могу создать oracle BLOB из native java Blob
-
22-08-2019 - |
Вопрос
Я читаю файл из результирующего набора, и это необходимо для сохранения файла в базе данных Oracle.
...
ResultSet rs = ...
java.sql.Blob myfile = rs.getBlob("field")
java.io.OutputStream os = ((oracle.sql.BLOB) myfile).getBinaryOutputStream();
Я получаю это сообщение об ошибке
java.lang.ClassCastException
У кого-нибудь есть решение этой проблемы?Спасибо!
Решение 3
Я нашел решение.Я хотел бы поделиться с теми, у кого есть эта проблема.
Код для получения outputstream из oracle blob является:
java.io.OutputStream os = ((oracle.sql.BLOB) myBlob).setBinaryStream(1L);
setBinaryStream() фактически возвращает объект java.io.OutputStream
Другие советы
java.sql.Blob
является интерфейсом.Предположительно, реализация вернулась в вашем ResultSet
является ли реализация, отличная от oracle.sql.BLOB
?
Что делает myfile.getClass()
вернуться?
Похоже, у вас там нет oracle.sql.BLOB (если бы вы это сделали, это должно сработать, BLOB реализует Blob).Что говорит об этом ClassCastException?
Какую версию Oracle и какую версию драйвера JDBC вы используете?
getBinaryOutputStream Получить двоичный выходной поток в любом случае, устарело, вы должны использовать setBinaryStream Установить бинарный поток в интерфейсе JDBC (3.0), который, вероятно, вообще устраняет необходимость перехода к внутреннему классу Oracle.