当前位置: 首页 > 面试题库 >

ResultSet中不允许使用updateLong

薄伟彦
2023-03-14
问题内容

我正在尝试在表格中添加序列号。这是我的方法:

public void reArrangeTrID(){
String parti = name.getText().toUpperCase();    
long trid = 1;

try{
String query="SELECT LONGDATE, TRID FROM PARTIACCOUNT WHERE PARTY= '"+parti+"' ORDER BY LONGDATE ASC ";
conn = new connection().db();
stmtt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
rs = stmtt.executeQuery(query);
while(rs.next()) {
    long tr = rs.getLong("TRID");
    rs.updateLong("TRID", trid);
    rs.updateRow();
    trid++;
    jLabel9.setText("Arranging transactions... Please wait.");
}
 }

catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "Unknown Error!! Data cannot be displayed!"+ex);
}
finally{try{stmtt.close(); rs.close(); conn.close(); }catch(SQLException ex){}}
}

为什么此方法给我一个错误updateLong not allowed because ResultSet is not an updatable ResultSet,而我的结果集已设置为可更新。我正在使用derby数据库。


问题答案:

根据Derby文档,带有的查询ORDER BY不可更新:

只有简单的单表SELECT游标才可以更新。可更新ResultSet的SELECT语句与可更新游标的SELECT语句具有相同的语法。生成可更新的游标:

  • SELECT语句不能包含ORDER BY子句。
  • 基础查询必须是SelectExpression。
  • 基础查询中的SelectExpression不得包含:
    • DISTINCT
    • 骨料
    • GROUP BY 条款
    • HAVING 条款
    • ORDER BY 条款
  • FROM基础查询中的子句不能具有:
    • FROM子句中有多个表
    • 一个表名以外的任何东西
    • 选择表达式
    • 子查询
  • 如果基础查询具有WHERE子句,则该WHERE子句不能具有子查询。

换句话说,您不能包含ORDER BY,但这会违背您的目的(因为您似乎在重新编号一些标识符)。

您可能需要使用一些查询来重新编号而不在JDBC中进行处理,或者您需要使用两个Statement对象,一个用于查询行,另一个用于更新行。

Derby也不支持TYPE_SCROLL_SENSITIVE结果集。根据文档,Derby支持以下两种:

  • TYPE_FORWARD_ONLY
  • TYPE_SCROLL_INSENSITIVE

请注意,您不需要当前代码TYPE_SCROLL_INSENSITIVE因为您仅将其作为转发处理。



 类似资料:
  • 问题内容: 我被错误卡住了,这里的第42行是,请帮我解决这个问题,我在这个问题上待了几个小时。 这是我的代码: 问题答案: 一个对象只能有一个active对象,因此在执行时,第一个ResultSet()被关闭。 创建两个对象,一个用于,另一个用于。 引用以下内容的javadoc : 默认情况下,每个对象只能同时打开一个对象。因此,如果一个对象的读取与另一对象的读取交错,则每个对象必须已由不同的对象

  • 问题内容: 我被错误卡住了,这里的第42行是,请帮我解决这个问题,我在这里待了几个小时。 这是我的代码: 问题答案: 一个对象只能具有一个active对象,因此在执行时,第一个ResultSet()被关闭。 创建两个对象,一个用于,另一个用于。 引用以下内容的javadoc : 默认情况下,每个对象只能同时打开一个对象。因此,如果一个对象的读取与另一个对象的读取是交错的,则每个对象必须已由不同的对

  • 我正在测试一个用Java和spring boot写的应用程序,我有一个问题。我的测试模拟一个HTTP请求,该请求只有在数据放置在头中时才有效。这是我的简单测试的代码: 不幸的是这次测试失败了。用于测试的Java代码如下: 在实际操作中,似乎找不到应该从请求头中取出的字符串!因此,测试只评估else分支,实际上在stacktrace中也告诉我,测试希望状态已创建,但状态302已给出。既然应用程序(没

  • 我正在尝试在网页上嵌入一个小程序。我已经将代码导出为IntelliJ中的压缩applet。现在,当我尝试运行它时,我得到以下堆栈跟踪: 我相信该错误是由于试图使用类中的方法获取图像而导致的。这是代码: 下面是我在HTML中使用的标记以供参考: 如果您想亲自查看错误,只需访问http://nrubin29.github.io/freefall-applets/ 谢谢!

  • 当我搜索要选择的按钮时,我遇到了一个问题。当我尝试使用搜索它时 但是,它给了我一个错误 - 。我阅读了有关此问题的信息,似乎使用解决方案器是解决问题的方法,而不是使用。但是,我无法使 csS 选择器正常工作。这是包含我正在搜索的元素的html片段。 如何选择“pager__item pager__item - last”项目?

  • 问题内容: 我打算使用Ajax将跨域请求发送到soap Web服务。Web服务的URL是:http://example1.asmx?op = GetVOD 我的代码: 在IIS 7服务器端,我已经将这些行添加到文件web.config中 当我在Chrome上运行客户端代码时,出现405错误: 有谁知道如何解决这个问题? 预先感谢 问题答案: 听起来像Web DAV正在阻碍。这是删除它的配置: ht