복붙노트

[SQL] 예외 : SQLException :하는 executeQuery 방법은 업데이트를 사용할 수 없습니다

SQL

예외 : SQLException :하는 executeQuery 방법은 업데이트를 사용할 수 없습니다

나는 자바 서블릿 클래스를 사용하여 더비 DB에 등록 양식에서 가져온 사용자 정보를 삽입하는 것을 시도하고있다.

사용자가이 작성 사용자의 정보 제출 '버튼을 클릭 한 후 바로 내가 넷빈즈에 DB에 연결하세요. 그럼이 방법을 실행해야합니다 :

public void insertNewUser(String userName, String passWord, String lastName, String firstName, String age, char sex, String email) {
    try {
        stmt = conn.createStatement();
        String insertNewUserSQL = "INSERT INTO " + studentsTable + " VALUES ('" + userName + "', '" + passWord + "', '" + lastName + "', '" + firstName + "', " + age + ", '" + sex + "', '" + email + "')";
        System.out.println(insertNewUserSQL);
        stmt.executeQuery(insertNewUserSQL);
        stmt.close();
    } catch(SQLException sqlExcept) {
        sqlExcept.printStackTrace();
    }
}

그러나 나는 다음과 같은 예외가 점점 계속 :

java.sql.SQLException: executeQuery method can not be used for update.

이 정확히 무엇을 의미합니까?

내가 넷빈즈 SQL 명령 창에 수동으로 할 수있는 SQL 명령이 올바른 것입니다.

서블릿이나 내가 모르는 뭔가가 제한이 있습니까?

사전에 감사합니다!

해결법

  1. ==============================

    1.당신이 기록을 삽입하고 있기 때문에, 당신은 executeUpdate의를 사용한다 ()하지하는 executeQuery ().

    당신이 기록을 삽입하고 있기 때문에, 당신은 executeUpdate의를 사용한다 ()하지하는 executeQuery ().

    다음은 일반적으로 오용하는 몇 가지 방법은 다음과 같습니다 :

    () 실행 개요 boolean

    의 ResultSet하는 executeQuery ()

    INT executeUpdate의 ()

    이 SQL 인젝션에 취약으로 한가지 더, 쿼리가 약합니다. PreparedStatement의를 사용하여 파라미터 마십시오.

    코드 조각 샘플 :

    String insertNewUserSQL = "INSERT INTO " + studentsTable + " VALUES (?, ?, ?, ?, ?, ?, ?)";
    PreparedStatement pstmt = con.prepareStatement(insertNewUserSQL);
    pstmt.setString(1, userName);
    // ... repeat this step until the last parameter ....
    pstmt.setString(7, email);
    pstmt.executeUpdate();
    
  2. ==============================

    2.다음과 같이 업데이트 값에 당신은, 갱신 가능한 ResultSet의를 사용해야합니다 :

    다음과 같이 업데이트 값에 당신은, 갱신 가능한 ResultSet의를 사용해야합니다 :

    ResultSet res = preparedStatement.executeQuery(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
    res.first();
    res.updateInt("id", 2);
    res.updateRow();
    

    다음과 같이 다른 방법으로는, 문장의 executeUpdate의 방법을 사용할 수 있습니다 : statement.executeUpdate ( "업데이트 테이블 세트 ID = 2");

  3. from https://stackoverflow.com/questions/16006868/sqlexception-executequery-method-can-not-be-used-for-update by cc-by-sa and MIT license