자바 SQL쪽 에러 입니다 도와주세요 ㅠㅠ
핫다홍
public boolean update(int memono,String name,String memocontent,String url,String pass) {
boolean flag = false;
Connection con = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
StringBuffer sql = new StringBuffer();
try{
con = pool.getConnection();
sql.append( SELECT count(memono) as cnt );
sql.append( FROM + table_name );
sql.append( WHERE memono = ? and pass = ? );
pstmt = con.prepareStatement(sql.toString());
pstmt.setInt(1, memono);
pstmt.setString(2, pass);
rs = pstmt.executeQuery();
rs.next();
if(rs.getInt(cnt)0){
sql.append( UPDATE + table_name);
sql.append( SET name=? ,memocontent=?,url=? );
sql.append( where memono = ? );
pstmt = con.prepareStatement(sql.toString());
pstmt.setString(1, name);
pstmt.setString(2, memocontent);
pstmt.setString(3, url);
pstmt.setInt(4, memono);
int ret = pstmt.executeUpdate();
if(ret == 1){
flag=true;
}else{
flag = false;
}
}}catch(SQLException e){
System.err.println(SQLError : + e);
}catch(Exception e){
System.err.println(알 수 없는 에러 : + e);
}finally{
DBClose.close(con, pstmt, rs);
}
return flag;
}
음 오라클 디비를 연동하여 DAO클래스에서 SQL쿼리를 처리하고 있습니다..근데 저기 에러를 System.out.println()으로 어디서 에러나나 하나식 잡아보다보니까 저기서 나더군요..에러내용은SQLError : java.sql.SQLException: 인덱스에서 누락된 IN 또는 OUT 매개변수:: 5
테스트 할때 매개변수 값으로 5개다 정확히 맞게 넣어줬구...했는데 저런에러가 나네요 뭐때문에 저럴까요..아 이것만 하면 메모장 구현은 다끝나는데..마지막에 발목잡히네요 ..ㅠㅠ
-
누리봄 2024-03-24
음..제가 보기엔.. StringBuffer sql 이게 처음에 select 하고나서 다음 update 할땐 다시 초기화를 시키고 append해야 하는데 그게 없네요. 그럼 sql은 계속 이어지겠죠? 한문장에 select와 update가 모두 들어가버리게 되는..그러니까 매핑 인덱스가 1,2 인게 두번씩 나오게 되구요.. pstmt도 두번 연달아 쓰기전에 초기화를 해야할거예요. 수정해보세요 ^^