Вопрос

Я читаю файл из результирующего набора, и это необходимо для сохранения файла в базе данных 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top