JDBC编程结果集的分页显示
摘要:目前数据库的应用非常普遍,在应用程序的开发过程中,经常会涉及到访问数据库。Java使用JDBC技术进行数据库的访问。查询是数据库的操作中较为频繁的一种操作,返回的结果有时可能是很多条记录的结果集,用户在浏览和处理时不方便,常常会用到分页处理功能。
关键词:JDBC数据库;驱动程序;结果集
中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)06-11511-01
1 JDBC技术
JDBC(Java Database Connectivity)是Sun提供的一套数据库编程接口API函数,由Java语言编写的类和接口组成。JDBC为数据库开发人员提供了一个标准的API,使用Java编程语言和JDBC结合编写的应用程序,无须考虑要为不同的平台编写不同的应用程序。真正实现“Write Once,Run Everywhere!”。
2 JDBC编程实现
使用JDBC技术进行数据库访问时,Java应用程序通过JDBC API和JDBC驱动程序管理器之间进行通信,JDBC驱动程序管理器以两种方式和最终的数据库进行通信:一是使用JDBC-ODBC桥驱动程序的间接方式,另一种是使用JDBC驱动程序的直接方式。
下面以JDBC驱动程序的直接方式为例,说明Java语言与SQL Server2000连接的JDBC编程的全过程:
(1)加载驱动程序
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
(2)通过DriverManager到得一个与数据库连接的句柄
private static String url="jdbc:microsoft:sqlserver://localhost:1433;databasename=xxxx ";
Connection con = DriverManager.getConnection(url, user,password);
(3)通过连接句柄绑定要执行的语句
Statement stmt = con.createStatement();
(4)接收执行结果
ResultSet rs=stmt.executeQuery(sql);
或ResultSet rs=stmt.executeUpdate(sql);
(5)对结果进行处理
调用get XXX()方法对获取结果中的值。
(6)关闭与数据库的连接
rs.close();
stmt.close();
con.close();
3 JDBC编程结果集分页显示
在ResultSet类中提供了一套数据的分页处理功能。
3.1 技术要点
(1)createStatement()方法:
public Statement createStatement()
获取默认连接声明,没有指针操作
public Statement createStatement(int resultSetType,int resultSetConcurrency)
resultSetType决定结果集类型的滚动方式,它的取值为:ResultSet.TYPE_FORWARD_ONLY、Result.TYPE_SCROLL_INSENSITIVE和ResultSet.TYPE_SCROLL_SENSITIVE
resultSetConcurrency决定是否可以用结果集更新数据库。它的取值为:Result.CONCUR_READ_ONLY 、Result.CONCUR_UPDATETABLE
(2)ResultSetMetaData结果集元对象类
结果集元数据通过使用getMetaData()来获得结果集元对象。ResultSetMetaData结果集元对象类的方法:
getColumnCount()
getColumnName(int index)
getColumnTypeName(int index)
3.2 建立数据库
在SQL Server 2000下建立一个名为book的数据库,在book数据库下建立一个图书信息表bookInfo,表的结构为:bookInfo(no,bookname,author,price,public)
3.3 Java源程序
为了使得程序具有一定的通用性和灵活性,将要显示的号码和每页的大小(每页的记录数)由命令行输入。即命令行参数arg[0]代表pageno,参数arg[1] 代表pagesize。源程序JDBCScrollDisplay.java如下:
import java.sql.*;
public class JDBCScrollDisplay{
private static String url="jdbc:microsoft:sqlserver://localhost:1433;databasename=book";
private static String username="sa";
private static String password="sa";
public Connection conn(){
try {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Connection con = DriverManager.getConnection(url, username, password);
return con;
}
catch(SQLException e1){
System.out.println("can't connection db:"+e1);
return null;
&n