如何将 JDBC 结果集作为 ArrayList 返回并限制它返回的记录?
日期:2003 年 6 月 29 日
目标
在阅读本文档后,您应该能够:
-
将结果集作为 ArrayList 返回。
-
限制由结果集返回的记录。
-
使用所提供的指示,运行示例代码来完成相同的操作。
软件需求
说明
本文档演示几个关于 JDBC 结果集的简单操作,如将结果集的结果作为 ArrayList 返回以及限制由结果集返回的记录数。
当 SQL 查询返回大量记录并且需要限制由查询返回的行数时,可以使用两种方法。一种方法在 SQL 语句本身内部使用 rownum,另一种则使用 statement.setMaxRows() 方法。通过最大限度地减少从数据库检索的数据,可以改善性能。 代码段: 限制由结果集返回的记录:
................
int rowlimit = 7;
stmt = conn.createStatement();
rs = stmt.executeQuery(sqlString);
//Limit the rows returned
stmt.setMaxRows(rowlimit);
...............
|
|
setMaxRows() 方法将一个整数作为参数,设置由语句对象所检索的行。如果行数超出由 setMaxRows() 指定的数值,则从后台将其删除。
将结果集的结果作为 ArrayList 返回:
..............
Statement stmt = null;
ResultSet rs = null;
// To store all records of 'emp' as individual array elements.
ArrayList rowArray = new ArrayList();
// To store every three elements of rowArray as a single array element.
// The three elements refers to one 'emp' record.
ArrayList rowsetArray = new ArrayList();
int sal = 0;
..............
..............
// Create a string that has the SQL statement gets all
// records from 'emp' table in SCOTT schema.
String sqlString = "select * from emp where hiredate between "+
"to_date('01-Apr-1980') and to_date('01-Apr-2003')";
stmt = conn.createStatement();
rs = stmt.executeQuery(sqlString);
// Add the ResultSet value to an ArrayList.'ename','job'
// and 'sal' are added to the ArrayList.
while (rs.next()) {
array.add(rs.getString(2)+" "+rs.getString(3)+
" "+rs.getInt(6));
}
// Close the ResultSet and Statement.
...............
...............
return array;
................
|
|
源代码:
单击此处查看全部可运行的源代码。
运行 Java 类
-
将全部源代码 (LimitResultSetInArray.java.html) 拷贝到一个目录并将其保存为 LimitResultSetInArray.java 文件。
-
编辑 LimitResultSetInArray.java 并在类构造器中更改设置数据库参数的行。
// Connect to the local database. conn = DriverManager.getConnection ("jdbc:oracle:thin:@insn104a.idc.oracle.com:1521:ora9idb", "scott", "tiger");
注:以下是设置数据库参数的格式。 conn = DriverManager.getConnection ("jdbc:oracle:thin:@<hostname>:<port>:<sid>", "scott", "tiger"); 其中 <hostname> 是运行数据库的主机名。 其中 <port> 是数据库监听的端口号。默认为 1521。 其中 <sid> 是 Oracle 数据库的 sid。
-
从拷贝目录的命令提示符处,将 classpath 设置为包括
Oracle JDBC 驱动程序类: (classes12.zip 或 classes12.jar)以及当前目录。
-
现在,编译 CountResultSet 类。
javac LimitResultSetInArray.java
-
通过为所需参数赋值,运行该类。
java LimitResultSetInArray <rowlimitval> <rowlimitval> 是限定的行数值,按照 String 值发送。 例如: java LimitResultSetInArray"7" 此操作将从 arraylist 中打印 7 行 ename。尝试更改参数 <rowlimitval> 的值,查看输出的不同之处。
总结
本文档演示了如何将 JDBC 结果集作为 ArrayList 返回并限制它返回的记录。
请在 OTN 示例代码论坛中发表您对此示例的意见。 |