前段时间我编写了一段代码,其中ResultSet
类res的对象能够使用res.next()
来检索数据库的下一行。但是当使用res.previous()
时,即使在结果集类中定义了该方法,它也无法正常工作。
public void actionPerformed(ActionEvent e) {
if (e.getSource() == next) {
try {
res.next();
} catch(Exception ee) {
}
showRecord(res);
}
}
此处res.next()
很好,但res.previous()
无法正常工作,即使它从未发出任何错误或警告。即使我做了TYPE INSENSITIVE
,它也从未奏效?
showRecord(res);
用于打印行。
答案 0 :(得分:4)
这是一个坏主意。您不应该传递ResultSet实例。我建议将其映射到对象或数据结构,关闭finally块中的所有JDBC资源,并将对象或数据结构传递回UI层。
如果您坚持使用ResultSet,则上述所有其他注释仍然适用。只需使用CachedRowSet而不是ResultSet。
您可以按照自己喜欢的方式导航该数据结构或对象,因为您不再受限于数据库。你只需要聪明一下你带回多少数据。如果需要,你还需要一个回溯并获得下一个块的策略。