Я использую базу данных Дерби. Я написал этот запрос:
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» не поддерживается. Типы должны быть сопоставимы. Строковые типы также должны иметь соответствующие параметры сортировки. Если сопоставление не совпадает, возможное решение состоит в том, чтобы привести операнды к сопоставлению по умолчанию (например, SELECT tablename FROM sys.systables WHERE CAST(table name AS VARCHAR(128)) = 'T1')
Как написать запрос, чтобы обойти эту проблему?
Я также пытался использовать Convert, но это тоже не работает:
PreparedStatement st11 = conn.prepareStatement("select f from a1 where dBlob
=CONVERT(?,BINARY)");
st11.setBlob(1,is,BYTES.length);
Более того, можно ли получить тип данных передаваемого аргумента? путем отражения или каким-либо другим способом.