3

ResultSet在 Java中使用相同的对象是坏习惯吗?为什么或者为什么不?//这里似乎是我唯一的选择,因为我试图查询一个表的记录数,然后查询该表的视图;我不知道如何改变观点。

换句话说,是

ResultSet myResultSet = statement.executeQuery("SELECT count(*) FROM table");
myResultSet.next();
int recordCount = myResultSet.getInt(1);
myResultSet = statement.executeQuery("SELECT * FROM tableView");
//set other variables based on contents of fetched view

一个坏主意?

4

3 回答 3

4

在 Java 中使用相同的 ResultSet 对象是坏习惯吗?

我会说这取决于特定的要求和编码方式。

我相信您正在寻找的是一个可滚动的ResultSet ,它是作为2.0/2.1 版(集成到 JDK 1.2)中的一项新功能和改进功能引入的,它有两种风格:TYPE_SCROLL_INSENSITIVETYPE_SCROLL_SENSITIVE

如果我们看到您发布的代码:

ResultSet myResultSet = statement.executeQuery("SELECT count(*) FROM table");
myResultSet.next();
int recordCount = myResultSet.getInt(1);
myResultSet = statement.executeQuery("SELECT * FROM tableView");

您基本上所做的是将myResultSet引用变量设置为新ResultSet对象。我看不出有什么不好的地方,也许,比我更开明的人可以指出。

于 2013-07-05T08:46:39.083 回答
3

您发布的代码不会“重用相同ResultSet”,它只是丢弃一个ResultSet对象,然后使用相同的变量来保存ResultSet对第二个创建的不同对象的引用executeQuery。在用第二个结果集覆盖引用之前调用第一个结果集是一种很好的编码习惯close(),但这并不是绝对必要的,因为

当生成它的对象关闭、重新执行或用于从多个结果序列中检索下一个结果ResultSet时,该对象将自动关闭。Statement

(来自ResultSet JavaDoc 文档,我的粗体字)

于 2013-07-05T11:19:12.467 回答
2

完成表格后,您可以关闭相应的结果集。并且相同的参考可以用于另一个表。

如果要同时查询表和视图,则需要两个单独的结果集。

于 2013-07-05T08:46:17.657 回答