Derby 데이터베이스를 사용 중입니다. 이 쿼리를 작성했습니다 :PreparedStatement에서 BLOB 유형 비교
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 데이터 유형입니다. ERROR 42818 :
에 의한 'BLOB'와 'BLOB'사이의 비교는 지원되지 않습니다 내가이 쿼리를 실행할 때
는하지만 다음과 같은 예외를 얻을. 유형을 비교할 수 있어야합니다. 문자열 유형에도 일치하는 데이터 정렬이 있어야합니다. 공동 llation가 일치하지 않는 경우, 가능한 솔루션은 에 기본 데이터 정렬을 강제로 (예를 들어 sys.systables FROM TABLENAME을 선택 WHERE CAST (TABL ENAME AS VARCHAR (128)) = 'T1')를 피연산자를 캐스팅하는 것입니다
이 문제를 방지하기 위해 쿼리를 작성하려면 어떻게해야합니까?
나는 또한 변환하여 시도했다, 그러나 너무 작동하지 않습니다
PreparedStatement st11 = conn.prepareStatement("select f from a1 where dBlob
=CONVERT(?,BINARY)");
st11.setBlob(1,is,BYTES.length);
을 또한, 전달되는 인수의 데이터 유형을 얻을 수 있습니다? 반사 또는 다른 수단으로
감사합니다. Bryan. 나는 그 문제를 해결했다. 특정 이유로 PreparedStatement에 설정된 매개 변수의 유형을 비교 중입니다. 모든 LOB에 대해 일반적인 비교 유형을 제공 할 수 있습니까? 아니면 CLOB, BLOB 및 nCLOB 데이터 유형 각각을 구체적으로 비교해야합니까? – krammer