2014-01-30 5 views
1

다음 예제 코드에서 다음 스 니펫이 정상적으로 작동합니다.CQL SELECT가 prepareStatement와 함께 실패했습니다

SELECT_CQL = "SELECT * FROM " + STREAM_NAME_IN_CASSANDRA + " WHERE '" + CONTEXT_ID_COLUMN + "'=?"; 
Connection connection = getConnection(); 
statement = connection.prepareStatement(SELECT_CQL); 
statement.setString(1, "123"); 
resultSet = statement.executeQuery(); 

하지만 where 절의 쿼리에 다른 매개 변수를 추가하려고하면 아무 것도 반환하지 않습니다 !!

SELECT_CQL = "SELECT * FROM " + STREAM_NAME_IN_CASSANDRA + " WHERE '" + CONTEXT_ID_COLUMN + "'=? AND '"+TIMESTAMP_COLUMN+"'=?"; 
Connection connection = getConnection(); 
statement = connection.prepareStatement(SELECT_CQL); 
statement.setString(1, "123"); 
statement.setString(2, "1390996577514"); 
resultSet = statement.executeQuery(); 

cqlsh 터미널 내에서 정확한 쿼리를 시도하면 올바르게 작동합니다.

+0

bigint이 문제를 지적 해 주셔서 고맙습니다. 사용한 내 문제는 statement.setLong (2, 1390996577514L); – udarakr

답변

1
statement.setString(2, "1390996577514"); 

TIMESTAMP_COLUMN의 데이터 유형을 다시 확인하고 문자열인지 확인하십시오. 그렇지 않으면 적절한 "설정"방법을 사용해야합니다. 예 :

statement.setLong(2, 1390996577514L); 
관련 문제