摘要:目前数据库的应用非常普遍,在应用程序的开发过程中,经常会涉及到访问数据库。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;
}
catch (Exception e2) {
System.out.println("Failed to load JDBC driver.");
return null;
}
}
public void query(Connection con, String sql,int pageNo,int pageSize){
try{
if(con==null){
throw new Exception("database connection can't use!");
}
if(sql==null){
throw new Exception("check your parameter: 'sql'! don't input null!");
}
int rowCount; //记录总数
int pageCount; //总页数
Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet rs = stmt.executeQuery(sql); //执行查询
ResultSetMetaData rmeta = rs.getMetaData();//获得数据字段个数
int numColumns = rmeta.getColumnCount();
rs.last();
rowCount = rs.getRow();
pageCount = (rowCount +pageSize-1)/pageSize; //计算总页数
if(pageNo> pageCount) pageNo=pageCount; //调整待显示的页码
if(pageCount >0){
rs.absolute((pageNo-1)*pageSize+1); //将记录指针定位到待显示页的第一条记录上
int i = 0;
while(i){
for(int j = 0;j< numColumns;j++)
{
String sTemp = rs.getString(j+1);
System.out.print(sTemp+" ");
}
i++;
rs.next();
System.out.println("");
}
}
}
catch(Exception e){
System.out.println("query error:"+e);
}
}
public void demo(int pageNo,int pageSize){
try{
JDBCScrollDisplay jd = new JDBCScrollDisplay();
Connection con = jd.conn();
String sql = "select * from bookInfo order by no";
jd.query(con,sql,pageNo,pageSize);
con.close();}
catch(SQLException se){ System.out.println(se);}
catch(Exception e){System.out.println(e);}}
public static void main(String[] arg){
JDBCScrollDisplay jsd = new JDBCScrollDisplay();
int pageno = Integer.parseInt(arg[0]);
int pagesize = Integer.parseInt(arg[1]);
jsd.demo(pageno,pagesize);}}
4 结束语
JDBC是Java的一个标准SQL数据库访问接口,它为数据库应用开发人员、数据库前台工具开发人员提供一种标准的应用程序设计接口。开发人员只需使用JDBC提供的类,调用这些类的方法,即可对数据库进行访问,而无需关心所使用的具体是什么数据库系统。在实际的使用中经常会遇到要提供可滚动的结果集,只需要在使用分页数据时先声明是一个可移动的SQL语句。上例可以任何应用在对数据库做任意操作的基础上,再分页显示。
参考文献:
[1] 杜江,管佩森. Java实用编程100例[M]. 中国铁道出版社,2004,4.171-189.
[2] 於东军,杨静宇,李千目,王国全. Java程序设计与应用开发[M]. 清华大学出版社,2005.3.216-231.
本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。
FIFO(Java) | Java线程
分享到:
相关推荐
在Java编程中,JDBC(Java Database ...总结来说,JDBC分页主要是通过构造带有LIMIT和OFFSET的SQL查询来实现的,结合数据库连接、预编译的SQL语句和结果集的处理,可以在Java应用程序中优雅地完成数据库分页操作。
Servlet_jdbc_mysql_分页示例系统是一个基于Java Web技术的简单应用,它演示了如何使用Servlet、JDBC以及MySQL数据库实现数据的分页显示。这个项目对于初学者理解Web开发中的数据库操作和分页技术非常有帮助。下面将...
在Java开发中,数据库记录的分页显示是常见的需求,尤其是在Web应用程序中。JDBC(Java Database Connectivity)是Sun公司制定的Java平台下的数据库连接标准接口,它提供了统一的方式来访问不同数据库。然而,JDBC ...
综上所述,Java基于原生MySQL JDBC的分页组件主要涉及数据库连接、SQL构造、预编译查询、结果集处理及资源关闭。理解这些概念并能实际编写分页组件,对于提升Java开发者处理数据库的能力至关重要。
综上所述,"jsp+jdbc+servlet分页带增删查改"项目提供了一个完整的Web应用示例,涵盖了服务器端编程的核心技术和最佳实践,适合初学者学习和理解Web开发的全貌。通过这个项目,开发者可以深入理解如何在实际场景中...
JDBC 分页是指将结果集分页,减少内存占用和提高性能。常见的分页方法包括: * 使用 LIMIT 语句 * 使用游标 1.2.9 JDBC 封装 JDBC 封装是指将 JDBC 代码封装到一个单独的类中,简化了数据库访问的代码。 1.2.10 ...
Oracle提供了ROWNUM伪列,可以用来限制返回的结果集。在编写SQL语句时,我们可以结合ROWNUM和子查询来实现分页: ```sql SELECT * FROM ( SELECT ROWNUM AS row_num, t.* FROM YourTable t ) WHERE row_num ...
通过JDBC,我们可以执行SQL语句,处理结果集,管理事务等。 动态查询是根据用户输入或程序运行时的条件生成SQL语句的过程。在Java中,可以使用字符串拼接或者预编译的PreparedStatement对象来实现。...
JDBC是Java中用于与各种类型数据库交互的一组接口和类,它允许开发者执行SQL语句,处理结果集,以及进行数据库连接管理。 在描述中提到的“含PPT分页课程详解及源代码”,意味着包含了一份PPT演示文稿,可能详细...
游标在JDBC编程中常用于迭代查询结果。通过声明游标,设置查询条件,然后在循环中移动游标位置来获取分页数据。这种方式较为复杂,一般不推荐在SQL语句中直接使用,更适合在Java代码中操作。 3. Oracle高级分页: ...
这两个模板类可以极大地减少编写SQL和处理结果集的代码量。在分页示例中,我们需要执行包含LIMIT和OFFSET子句的SQL查询,以获取特定范围的数据。 首先,你需要创建一个数据访问对象(DAO),使用JdbcTemplate的方法...
本压缩包中的"java JDBC编程源码"很可能包含以下几个方面的内容: 1. **JDBC连接数据库**:源码中可能包含了如何通过`DriverManager.getConnection()`方法建立数据库连接的示例。首先需要加载数据库驱动,例如`...
分页技术在本项目中确保了留言版不会一次性显示所有留言,而是按页加载,使得用户可以流畅地浏览。 【项目结构】 根据提供的压缩包文件名称“留言板”,我们可以推测项目包含了一个或多个JSP文件,用于展示留言版的...
JDBC的主要功能包括连接数据库、执行SQL语句、处理结果集等。在JDBC中,我们通常需要经历以下几个步骤:加载驱动、建立连接、创建Statement或PreparedStatement对象、执行SQL语句、处理结果集、关闭连接。 2. JSP...
6. **处理结果集**: ResultSet对象存储查询结果,使用迭代遍历结果集,获取数据,如`while (rs.next()) { ... }`。 7. **关闭资源**: 完成操作后,记得关闭Statement、ResultSet和Connection,以释放系统资源,如`...
本话题将详细讲解如何通过编程实现分页显示数据库中的记录,特别是关注在ACCESS数据库环境下的实现方法。 首先,我们要理解分页的基本原理。分页是将一个大列表的数据分割成多个小部分,每个部分称为一页,用户可以...
### JDBC编程技术详解 #### 1. JDBC简介 **JDBC**(Java Database Connectivity)是一种用于执行SQL语句的标准Java API。它由一系列类和接口组成,为开发人员提供了使用纯Java API编写数据库应用程序的能力。这...
在IT行业中,分页显示是一种常见的数据展示技术,特别是在处理大量数据时,如数据库查询结果、源代码浏览等场景。本资源提供的是一个与Java相关的分页显示源代码,旨在帮助学习者理解和实现分页功能。Java作为一种多...
在Java编程领域,JDBC(Java Database Connectivity)是用于与各种数据库进行交互的标准接口。它允许Java应用程序连接到数据库,执行SQL查询,并处理结果。在这个“jdbc登陆加分页”的主题中,我们主要关注两个关键...