2013-10-01 2 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

Вы должны обновить строку сразу после того, как вы его принес (FOR UPDATE и rs.updateRow(),

ИЛИ

вы должны написать UPDATE tablename set = where statement для обновления строки в любое время

0

Запрос не может использовать функции. Попробуйте удалить «rand()» из строки запроса SQL.
Подробнее см. Спецификацию API JDBC 2.1, раздел 5.6.