Java 응용 프로그램에서 Firebird 데이터베이스를 쿼리하려고합니다. 이 쿼리는 2 개의 정수 변수와 1 개의 문자열을 포함합니다. 쿼리는 다음과 같습니다jdbc 파이어 버드 연결에서 SQL 쿼리에 문자열 변수를 추가하는 방법
Statement statement = conn.createStatement();
ResultSet rs = statement.executeQuery("select * from table where
column1 < " + intvariable1 + " and (
column2 > " + intvariable2 +" or column2 = 0) and
column3 = '" + stringvariable + "' ";
Rs.next();
syso(rs.getInt(1));
ResultSet
가 비어 있음을 표시하지만 변수 대신 하드 코딩 된 문자열 값을 사용할 때 내가 예상 결과를 얻을.
같은 결과가있는 preparedstatements
도 시도해 보았습니다. 문자열 변수없이 작동합니다.
내가 잘못하고있는 아이디어가 있습니까?
편집 : 문제가 해결되었습니다. Stringvariable은 BLOB 필드에서 왔으며 그 안에 빈 값을 가지고 있습니다. 다듬기 기능을 호출하면 해당 기능이 삭제되었습니다.
당신은 문자열 값 주위에 선도적 인 쿼리에서 후행 공백을 가지고 – developer
변수를 통해 전달되는 데이터의 문제처럼 보인다되지 않은 경우, 공백을 잘라. 준비된 진술을 사용하십시오. –
사용 된 값과 반환 할 것으로 예상되는 테이블의 데이터를 표시하십시오. 그리고 준비된 문장을 사용하고 올바르게 사용하십시오. 값을 쿼리 문자열로 연결하지 마십시오. –