2013-10-01 10 views
6

ja dostaję ten błądBłąd MySQL: com.mysql.jdbc.NotUpdatable

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

Znam ten błąd dotyczy klucz podstawowy, ale dla wszystkich moich tabelach I początkowo wstawić podstawowy key.So dla tej tabeli również mam klucz podstawowy. Zamieszczam część mojego kodu.

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(); 

Po prostu powiedz mi, jeśli coś jest nie tak w tym kodzie. Pomóż. To moja baza

+----------------+---------------+------+-----+---------+----------------+ 
| 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

Nie pokazałeś, w jaki sposób przydzielono ci instrukcję ('st'). Musisz ustawić ją aktualizowalną w wywołaniu 'createStatement'. –

+1

To jest tam także St = con.createStatement (ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); –

+0

Czy próbowałeś dodać klauzulę "DO AKTUALIZACJI" do SELECT? –

Odpowiedz

1

Musisz zaktualizować wiersz natychmiast po sprowadził go (FOR UPDATE i rs.updateRow(),

LUB

trzeba napisać UPDATE zestaw nazw tablic = gdzie instrukcja aktualizowania wiersza w dowolnym czasie

0

Zapytanie nie może korzystać z funkcji. Spróbuj usunąć "rand()" z ciągu zapytania SQL.Aby uzyskać więcej informacji, zobacz specyfikację interfejsu API JDBC 2.1, sekcja 5.6.