Egloos 728x90

구글 애널리틱스


2009/02/26 20:36

[ Java ][ 에러 ] java.sql.SQLException: 부적합한 열 인덱스 ▷ Java 복습



이번에 게시판을 만들면서 DB에 쿼리문을 보내서 그 응답을 받는 부분을 만드는 중인데, 오랜만에 하니까 실수가 잦네요.

오늘 한참 해맸던 부분 중 하나가 PreparedStatement  인터페이스의 setString 메서드입니다.


StringBuffer strSqlQuery = new StringBuffer(); //StringBuffer 객체 준비
 strSqlQuery.append("SELECT * \n");
 strSqlQuery.append("from tableName" \n");
 strSqlQuery.append("where col1 = '?' and col2 ='?' ");

 preparedStatement_ = connection_.prepareStatement(strSqlQuery.toString());

 preparedStatement_.setString(1, "문자열1");
 preparedStatement_.setString(2, "문자열2");



이렇게 짜고 실행시켰더니, 계속해서 [ 부적합한 열 인덱스 ]라는 메시지만 나오면서 쿼리가 실행되질 않아버리는 겁니다. 나중에 알고 봤더니 문자열 입력시에는(즉, setString 메서드를 쓸 때는) 자동적으로 해당 문자열의 양 끝에 작은 따옴표(')가 붙는 거였습니다.

즉 저 상태로 쿼리를 만들면 [ SELECT *  from tableName where col1 = ''문자열1'' and col2 =''문자열2''  ] 가 되버리니 에러가 날 수 밖에요.

그냥 작은 따옴표 없이 그대로


strSqlQuery.append("where col1 = ? and col2 =? ");


이렇게 썼으면 해결될 문제였습니다. _no

*결론: 문자열이라고 괜시리 미리 작은 따옴표(')로 감쌀 필요 없다.


핑백

  • 별소리의 엄마쟤흙먹어 : 2009년 내 이글루 결산 2009-12-30 22:46:25 #

    ... sp;(41회) / [ 엘소드 ] 레나 2차 전직 그랜드 아쳐, 윈드 스니커 이미지 공개가장 많이 읽힌 글은 [ Java ][ 에러 ] java.sql.SQLException: 부적합한 열 인덱스 입니다. 가장 대화가 활발했던 글은 [ 엘소드 ] 레나 2차 전직 입니다. ( 덧글 11개 / 핑백 1개 ) 내이글루에 ... more

덧글

  • sagehoit 2009/06/26 14:13 # 삭제 답글

    감사합니다~ ㅜㅜ (감격감격)
  • 2009/09/23 16:21 # 삭제 답글 비공개

    비공개 덧글입니다.
  • 나그네 2018/09/21 18:29 # 삭제 답글

    정보 감사합니다 ^^
  • 와우 2019/05/02 15:29 # 삭제 답글

    고맙스빈다 ㅠㅠㅠㅠㅠㅠㅠㅠㅠ
댓글 입력 영역

애드센스336x280

알라딘TTB-Egloos(하단-일반)



이 이글루를 링크한 사람 (블랙)

36