본문 바로가기
Error/Java

[ERROR] java.sql.SQLException: 부적합한 열 인덱스 오류

by 챠챠12 2020. 7. 29.

java.sql.SQLException: 부적합한 열 인덱스 오류

 

 

위의 사진과 같은 오류가 발생하였고, 코드는 아래와 같이 작성했었습니다. 

이와 같은 에러가 발생하는 이유는 즉, 들어갈 값이 부적절해서 발생하는 에러입니다.

 

	int result = 0;
    String sql = "insert into board values((select max(seq)+1 from board),?,?,?,sysdate,?,?)";
    PreparedStatement st = con.prepareStatement(sql);

	st.setString(2, board.getTitle());
	st.setString(3, board.getContents());
	st.setString(4, board.getWriter());
	st.setInt(6, board.getPassword());
	st.setInt(7, 0);
    
    st.executeUpdate();
            
            

 

PreparedStatement로 쿼리문 작성시 파라미터를 물음료포 표시하고,

"PreparedStatement변수명.setString(몇번째 물음표 인지 숫자로 표시, 들어갈 값)" 과 같이 작성해야합니다.

 

그러나 저는 insert에 들어가는 칼럼이 7개여서 거기에 맞춰 들어갈 칼럼 위치의 숫자로 표시해 실행을 시켜  맨 위와 같은 부적절한 인덱스 오류가 뜨게 되었습니다.

즉, 순서가 틀려서 서로 다른 부적합한 값이 들어가 에러가 발생했던 것이였습니다.

 

그래서 물음표만 넣은 위치 순서를 다시 넣어서 실행시킨 결과 아주 잘 실행되었습니다!!

 

	int result = 0;
    String sql = "insert into board values((select max(seq)+1 from board),?,?,?,sysdate,?,?)";
    PreparedStatement st = con.prepareStatement(sql);
    
    st.setString(1, board.getTitle());
    st.setString(2, board.getContents());
    st.setString(3, board.getWriter());
    st.setInt(4, board.getPassword());
    st.setInt(5, 0);
    
	result = st.executeUpdate();

 

반응형
LIST

댓글