2013-10-01 11 views
6

は私がMYSQLのエラーは:com.mysql.jdbc.NotUpdatable

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

が、私はこのエラーが主キーについて知っている、このエラーを取得していますが、すべての私のテーブルのために私は当初、このテーブルのプライマリkey.Soを挿入します私もプライマリキーを持っています。私は自分のコードの一部を投稿しています。

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

このコードで何か問題が起こっているかどうかを教えてください。 は、これは私のデータベース

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

これもそこにあります。st = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE、ResultSet.CONCUR_UPDATABLE); –

+0

"FOR UPDATE"句をSELECTに追加しようとしましたか? –

答えて

1

であるあなたが書く必要が

OR

、)UPDATEおよびrs.updateRow(FOR(あなたがそれをフェッチした直後の行を更新する必要がありますUPDATE tablename set = where文はいつでも行を更新します

0

クエリは関数を使用できません。SQLクエリ文字列から "rand()"を削除してみてください
詳細については、JDBC 2.1 API仕様のセクション5.6を参照してください。