本文介绍了为什么我在调用 ResultSet.refreshRow() 时会看到 NotUpdatable?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我调用以下行时:

Statement statement = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet resultSet = statement.executeQuery("select * from user");
resultSet.next();
resultSet.refreshRow();//exception throws here

我看到以下异常:

com.mysql.jdbc.NotUpdatable:结果集不可更新.此结果集必须来自使用结果集类型创建的语句ResultSet.CONCUR_UPDATABLE,查询必须只选择一张表,可以不使用函数,必须从该表中选择所有主键.有关更多详细信息,请参阅 JDBC 2.1 API 规范,第 5.6 节.这结果集必须来自使用结果创建的语句设置 ResultSet.CONCUR_UPDATABLE 的类型,查询必须只选择一个表,不能使用函数,必须选择所有主键那张桌子.有关更多信息,请参阅 JDBC 2.1 API 规范,第 5.6 节详情.

我想知道这个异常,因为如果阅读 refreshRow 方法 javadoc 我们可以找到以下内容:

I wondered this exception because if read refreshRow method javadoc we can find following:

refreshRow 方法为应用程序提供了一种显式方法告诉 JDBC 驱动程序从数据库中重新获取一行

因此如下方向:database -->结果集

我有以下理解:

可更新是使用以下方向的可能性:

updatable is possibility to use following direction:

ResultSet --> database

所以我不明白问题的原因.

Thus I don't understand cause of problem.

请澄清.

推荐答案

当你使用ResultSet.CONCUR_READ_ONLY时,你会得到一个异常,那个

When you are using, ResultSet.CONCUR_READ_ONLY, you are getting an exception, that

com.mysql.jdbc.NotUpdatable:结果集不可更新.此结果集必须来自使用结果集类型创建的语句ResultSet.CONCUR_UPDATABLE,查询必须只选择一张表,可以不使用函数,必须从该表中选择所有主键.有关详细信息,请参阅 JDBC 2.1 API 规范,第 5.6 节.

因此,将 ResultSet.CONCUR_READ_ONLY 更改为 ResultSet.CONCUR_UPDATABLE,解决了您的问题.对吗?

So, changing ResultSet.CONCUR_READ_ONLY to ResultSet.CONCUR_UPDATABLE, solved your problem. Correct?

现在,据我了解,您不想这样做.我对吗?如果是,那么我认为您将 ResultSet 与 Database 混淆了,

Now, as I understand, you don't want to do that. Am I right? If yes, then I think you are confusing ResultSet with Database,

  • ResultSet.CONCUR_READ_ONLY,表示只读ResultSet,不是Database,类似
  • ResultSet.CONCUR_UPDATABLE,表示可更新的ResultSet,而不是Database.

方法 resultSet.refreshRow() 假设更新 resultSet,因此它正确地需要可更新的 ResultSet.我希望现在很清楚.

The method, resultSet.refreshRow(), suppose to update the resultSet, hence it rightly requires updatable ResultSet. I hope it's clear now.

这篇关于为什么我在调用 ResultSet.refreshRow() 时会看到 NotUpdatable?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-04 02:45