본문 바로가기

Programming/Tip&Informaion

[java/db/실수] prepareStatement에서 setString 후 결과가 없는 문제

SELECT COL1 FROM TABLE WHERE COL2 = ?

위와 같는 prepareStatement 에서 setString 으로 값을 넘겨준 뒤, resultSet으로 결과를 받은 뒤, next() 함수로 확인해보니 값이 들어가지 않았다.

실제 쿼리를 실행해보면 잘 작동했고
setString과 ? 없는 쿼리를 하면 잘 작동했다.

1) 인자에 공백이 포함되어 있나 확인해봤지만 공백은 없는 것처럼 보였다.

oracle 기준 prepareStatement를 출력해봐도 setString 후의 쿼리가 보이질 않았어 난항이었다.

2) setString의 사용 문제로 추정되었고 위의 문제로 쿼리문 자체를 출력은 안 돼서 쿼리문을 수정하여 확인해보았다.

SELECT COL1, ? FROM TABLE

이런식으로 쿼리를 수정하고 setString 을 한 뒤 resultSet에서 getString을 해보니 정상적으로 값을 가져왔다.

결론) 인자값이 string 타입인데 형태는 숫자였다. setString 대신 string을 int형으로 바꾼 뒤, setInt 로 하니깐 정상 작동하였다.
string 타입이기에 setString을 했는데 문제가 있었다. 테이블의 컬럼 타입도 char 타입인데 작동을 안 하니 이상하다.