2013-10-01 12 views
6

BenMYSQL hatası: com.mysql.jdbc.NotUpdatable

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

Bu hata birincil anahtar ilgili olduğunu biliyoruz bu hatayı alıyorum ama tüm tablolar için ben başlangıçta bu tablo için birincil key.So eklemek Ayrıca birincil anahtarım var. Kodumun bir kısmını yayınlıyorum.

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

Sadece bu kodda bir şeyler ters giderse bana bildirin. Bu, bir yazmak zorunda, sen UPDATE ve rs.updateRow() İÇİN (alınamadı hemen sonra satır güncellemek zorunda

VEYA

benim veritabanı

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

Deyimi nasıl ayırdığınızı göstermediniz (st). "CreateStatement" çağrısında güncellenebilir ayarlamanız gerekir. –

+1

Ayrıca, orada da vardır st = con.createStatement (ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); –

+0

"FOR UPDATE" deyimini SELECT öğesine eklemeyi denediniz mi? –

cevap

1

olduğunu UPDATE tablename set = herhangi bir zamanda herhangi bir satırı güncellemek için deyim

0

Sorgu işlevleri kullanamazsınız. SQL sorgu dizesindeki "rand()" öğesini kaldırmayı deneyin.
Daha fazla ayrıntı için JDBC 2.1 API Spesifikasyonu, bölüm 5.6'ya bakın.