7

我收到此错误

javax.servlet.ServletException:com.mysql.jdbc.NotUpdatable:结果集不可更新。

我知道这个错误是关于主键的,但是对于我所有的表,我最初都插入了一个主键。所以对于这个表,我也有一个主键。我发布了我的代码的一部分。

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

2 回答 2

1

您必须在获取后立即更新该行(FOR UPDATE 和 rs.updateRow(),

或者

您必须编写一个 UPDATE tablename set = where 语句来随时更新一行

于 2015-06-05T09:37:11.760 回答
0

查询不能使用函数。尝试从 SQL 查询字符串中删除“rand()”。
有关更多详细信息,请参阅 JDBC 2.1 API 规范,第 5.6 节。

于 2016-08-03T17:26:03.363 回答