java.sql.SQLException: 부적합한 열 인덱스 오류위의 사진과 같은 오류가 발생하였고, 코드는 아래와 같이 작성했었습니다. 이와 같은 에러가 발생하는 이유는 즉, 들어갈 값이 부적절해서 발생하는 에러입니다.
PreparedStatement로 쿼리문 작성시 파라미터를 물음료포 표시하고, "PreparedStatement변수명.setString(몇번째 물음표 인지 숫자로 표시, 들어갈 값)" 과 같이 작성해야합니다. 그러나 저는 insert에 들어가는 칼럼이 7개여서 거기에 맞춰 들어갈 칼럼 위치의 숫자로 표시해 실행을 시켜 맨 위와 같은 부적절한 인덱스 오류가 뜨게 되었습니다. 즉, 순서가 틀려서 서로 다른 부적합한 값이 들어가 에러가 발생했던 것이였습니다. 그래서 물음표만 넣은 위치 순서를 다시 넣어서 실행시킨 결과 아주 잘 실행되었습니다!! ERROR java.sql.SQLException: 부적합한 열 이름오류내용 원인 - xml에서 설정한 컬럼명과 레코드셋에서 받아오는 변수명이 같이 않아 발생함. 처리 - 쿼리 부분 컬럼명과 동일하게 맞쳐줌. jsp 파일 Id: <%=rs.getString("id") %><br> <%-- 처리 부분 --%> String sql="INSERT INTO USERINFO(ID,PASS,NAME,ADDRESS,PHONE,EMAIL,REGDATE)"+ 다양한 경우에서 이런 Exception이 출몰하는 것 같다. 아래의 경우는 사용되는 Column/Table들의 이름들을 동적으로 설정한 것이며, <select id="fileInfo" resultClass="java.util.Map" parameterClass="java.util.Map"> 원문: http://jace.tistory.com/trackback/57 ibatis를 사용하는 경우 동적으로 table name과 column name을 생성하여 예를 들면 다음과 같다. 전혀 이상없는 구문이나 실행시 에러가 발생한다. WAS를 재기동하면 또 첫번째는 이상없으나, 두번째 부터 에러가 발생한다. 에러 내용은 다음과 같다. [03-05 20:41:52] ERROR StandardWrapperValve.java:253 : Servlet.service() for servlet jsp threw exception org.springframework.jdbc.BadSqlGrammarException: SqlMapClient operation; bad SQL grammar []; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException: 해결하기 위해 구글링을 시작하였다. ibatis는 특정 id의 쿼리를 실행 한 후 동일한 id에 대한 요청시 캐쉬에 저장된 쿼리정보를 토대로 result값을 맵핑 시킨다고 한다. 이를 해결하기 위해선 remapResults="true" 속성을 추가해 주면 된다. 즉 아래와 같이 사용하면 된다. <select id="fileInfo" remapResults="true" resultClass="java.lang.String" parameterClass="java.util.Map"> |