2013-10-01 2 views
6

나는MYSQL 오류 : com.mysql.jdbc.NotUpdatable

javax.servlet.ServletException: com.mysql.jdbc.NotUpdatable: Result Set not updatable.

내가이 오류는 기본 키에 대해 알고이 오류를 얻고 있지만, 내 모든 테이블에 대해 나는 처음에이 테이블에 대한 기본 key.So를 삽입 또한 기본 키가 있습니다. 코드 일부를 게시하고 있습니다. 뭔가이 code.please 도움말에서 잘못가는 경우

Statement st=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE); 
ResultSet rs=st.executeQuery("Select * from test3 order by rand() limit 5"); 
List arrlist = new ArrayList(); 
while(rs.next()){ 
    String xa =rs.getString("display"); 
    if(xa.equals("1")){ 
     arrlist.add(rs.getString("question_text")); 
    } 
    rs.updateString("display", "0"); 
    rs.updateRow(); 

그냥 말해. 이것은 당신이 작성해야, 당신은 UPDATE 및 rs.updateRow()의 경우 (그것을 가져 직후 행을 업데이트 할 필요가

또는

내 데이터베이스

+----------------+---------------+------+-----+---------+----------------+ 
| Field   | Type   | Null | Key | Default | Extra   | 
+----------------+---------------+------+-----+---------+----------------+ 
| id    | int(11)  | NO | PRI | NULL | auto_increment | 
| index_question | varchar(45) | YES |  | NULL |    | 
| question_no | varchar(10) | YES |  | NULL |    | 
| question_text | varchar(1000) | YES |  | NULL |    | 
| file_name  | varchar(128) | YES |  | NULL |    | 
| attachment  | mediumblob | YES |  | NULL |    | 
| display  | varchar(10) | YES |  | NULL |    | 
+----------------+---------------+------+-----+---------+----------------+ 
+0

명세서를 어떻게 할당했는지 ('st') 표시하지 않았습니다. 'createStatement' 호출에서 업데이트 가능하도록 설정해야합니다. –

+1

그곳에도있다 Statement st = con.createStatement (ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); –

+0

SELECT에 "FOR UPDATE"절을 추가하려고 했습니까? –

답변

1

입니다 UPDATE tablename set = where 문은 언제든지 행을 업데이트합니다.

0

쿼리는 함수를 사용할 수 없습니다 .SQL 쿼리 문자열에서 "rand()"를 제거해보십시오.
자세한 내용은 JDBC 2.1 API 사양, 5.6 절을 참조하십시오.