如何解决ResultSet中不允许使用updateLong
只有简单的单表SELECT游标才可以更新。可更新ResultSet的SELECT语句与可更新游标的SELECT语句具有相同的语法。生成可更新的游标:
换句话说,您不能包含ORDER BY
,但这会违背您的目的(因为您似乎在重新编号一些标识符)。
您可能需要使用一些查询来重新编号而不在JDBC中进行处理,或者您需要使用两个Statement
对象,一个用于查询行,另一个用于更新行。
Derby也不支持TYPE_SCROLL_SENSITIVE
结果集。根据文档,Derby支持以下两种:
请注意,您不需要当前代码,TYPE_SCROLL_INSENSITIVE
因为您仅将其作为转发处理。
解决方法
我正在尝试在表格中添加序列号。这是我的方法:
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数据库。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。