我是否认为对于具有n个USERS的数据库,以下代码至少与数据库进行了n次交互?
Statement stmt = con.createStatement();
ResultSet srs = stmt.executeQuery(
"SELECT FAVOURITE_COLOR FROM USERS");
while (srs.next()) {
//performSomeAction on srs.getString("FAVOURITE_COLOR");
}
那么是否也可以通过与数据库的1次I / O交互从所有用户中提取FAVOURITE_COLOR? 如果用户太多,那么如果这样可能会导致程序中的内存溢出?
答案 0 :(得分:2)
您的示例代码执行单往返数据库。
在一个简单的实现中,executeQuery
将等待从数据库中检索整个数据集。然后,对next
的每次调用都会立即移至下一行。
答案 1 :(得分:1)
为什么你不能一次获得所有喜爱的彩色唱片?
ResultSet srs = stmt.executeQuery(
"SELECT USERID, FAVOURITE_COLOR FROM USERS");
实际上经过进一步思考后,这取决于你所谈论的平台和/或DBMS。您可能需要提供更多有关智能答案的信息。有些平台会立即获取所有行,让您循环浏览它们,有些只会在移动时拉行。