Я использую базу данных Derby. Я написал этот запрос:
InputStream is = new java.io.ByteArrayInputStream(BYTES);
PreparedStatement st11 = conn.prepareStatement("select f from a1 where dBlob =?)");
st11.setBlob(1,is,BYTES.length);
dBlob - это тип данных BLOB.
BYTES также тип данных BLOB.
Но я получаю следующее исключение при выполнении этого запроса:
Причина: ОШИБКА 42818: Сравнения между BLOB и BLOB не поддерживаются.
Типы должны быть сопоставимы. Типы строк также должны иметь сопоставления. Если со
llation не совпадает, возможное решение - использовать операнды, чтобы заставить их
сортировка по умолчанию (например, ВЫБЕРИТЕ имя таблицы ИЗ sys.systables WHERE CAST (таблица
ename AS VARCHAR (128)) = 'T1')
Как написать запрос, чтобы обойти эту проблему?
Я также пытался использовать Convert, но он тоже не работает:
PreparedStatement st11 = conn.prepareStatement("select f from a1 where dBlob
=CONVERT(?,BINARY)");
st11.setBlob(1,is,BYTES.length);
Кроме того, возможно ли получить тип данных передаваемого аргумента? отражением или каким-либо другим способом.