如何将 JDBC 结果集作为 ArrayList 返回并限制它返回的记录?

日期:2003 年 6 月 29 日

目标

在阅读本文档后,您应该能够:

  • 将结果集作为 ArrayList 返回。
  • 限制由结果集返回的记录。
  • 使用所提供的指示,运行示例代码来完成相同的操作。
软件需求
  • JDK1.3.x 或更高版本。可以从此处下载。
  • Oracle 数据库。可以从此处下载。
  • Oracle9i JDBC 驱动程序 9.2.x.x,可以从此处下载。

  • 或者
    Oracle Database 客户端安装文件,可以从此处下载。

    :Oracle Database 客户端安装文件提供 Oracle9i JDBC 驱动程序类。

说明

本文档演示几个关于 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.zipclasses12.jar)以及当前目录。
  • 现在,编译 CountResultSet 类。

  • javac LimitResultSetInArray.java
  • 通过为所需参数赋值,运行该类。

  • java LimitResultSetInArray <rowlimitval>
    <rowlimitval> 是限定的行数值,按照 String 值发送。
    例如:
    java
    LimitResultSetInArray"7"

    此操作将从 arraylist 中打印 7 行 ename。尝试更改参数 <rowlimitval> 的值,查看输出的不同之处。

总结

本文档演示了如何将 JDBC 结果集作为 ArrayList 返回并限制它返回的记录。


请在 OTN 示例代码论坛中发表您对此示例的意见。
寄送此页面
Printer View 打印机视图