⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pager.java

📁 地址薄
💻 JAVA
字号:
package javabean;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;

import forms.LinkManForm;
/**
 * Pager, 基于 JDBC 2.0 滚动机制的分页程序, 在MySQL, SQLServer, Access, Oracle 下测试通过.
 * 
 * @author 刘长炯
 * @version 1.0 2004-8-12
 */
public class Pager {
	/** Used database connection */
	private String driverName="com.microsoft.jdbc.sqlserver.SQLServerDriver";
	private String userName="sa";
	private String userPwd="";
	
	private String dbName="test";
//	jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=test;User=sa;Password=pwd
	private String url="jdbc:microsoft:sqlserver://localhost:1433;DataBaseName="+
	dbName+";User="+userName+";Password="+userPwd;
	
	Connection conn = null;
    private  Statement sm=null;
    private int pageSize;
    private String querySql;
    private String countSql;
    
	public Pager() {
		
	}
	
	public String getQuerySql() {
		return querySql;
	}

	public void setQuerySql(String querySql) {
		this.querySql = querySql;
	}

	public String getCountSql() {
		return countSql;
	}

	public void setCountSql(String countSql) {
		this.countSql = countSql;
	}

	public Pager(int pageSize)
	{
		this.pageSize=pageSize;
	}

	public int getPageSize() {
		return pageSize;
	}

	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}

	public void ConnectDB()
	{
		try {
			Class.forName(driverName).newInstance();
			conn=DriverManager.getConnection(url);
			sm=conn.createStatement();
//			System.out.print("数据库连接成功");
		} catch (InstantiationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch(SQLException e)
		{
			e.printStackTrace();
//			System.out.print("数据库连接失败");
		}
		
		
	}
	
	public void CloseDB()
	{
		try {
	        if(sm!=null)
	        {
	        	sm.close();
	        	
	        }
	        conn.close();
		}
		catch(SQLException e)
		{
			e.printStackTrace();
//			System.out.print("数据库关闭失败");
		}
	}
	
	/**
	 * 分页功能, 返回当页的数据(JDBC 2.0 实现).
	 * 
	 * @param currentPage
	 *            当前页面数(取值范围: 从 1 开始有效, 0 自动改为 1)
	 * @param pageSize
	 *            每页显示记录数
	 * 
	 * @return a Vector - 数据列表
	 */
	public Vector pageData(int currentPage) {
		this.ConnectDB();
		Vector results = new Vector();
	//	String tableName = "linkman";// 要处理的表格名
		ResultSet rs = null;
	//	querySql = "SELECT * FROM " + tableName;
		Statement stmt = null;
		try {
			// TODO: open connection
			// 生成可滚动的结果集表达式
			stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
					ResultSet.CONCUR_READ_ONLY);
			rs = stmt.executeQuery(querySql);
			int count = getTotalCount(); // 总记录数
			int totalPage = ((count + pageSize) - 1) / pageSize; // 总页面数
			if (currentPage <= 0) {
				currentPage = 1;
			}
			// 超出页码范围, 不返回数据
			if (currentPage > totalPage) {
				currentPage = totalPage;
				return results;
			}
			if ((currentPage - 1) * pageSize > 0) {
				// 移动结果集数据到当前页
				rs.absolute((currentPage - 1) * pageSize);
			}
			// rs.absolute(0); 在 ODBC 下会导致如下异常:java.sql.SQLException: Cursor
			// position (0) is invalid
			int i = 0; // Readed pages
			while (rs.next() && i < pageSize) {
				i++;
				// TODO: Read each row and process to value object
				LinkManForm bean = new LinkManForm();
				bean.setId(rs.getInt("id"));
				bean.setUserId(rs.getInt("userid"));
				bean.setName(rs.getString("name"));
				bean.setSex(rs.getInt("sex"));
				bean.setPhone(rs.getString("phone"));
				bean.setAddress(rs.getString("address"));
				// TODO: Read value to value object
				results.add(bean);
			}
		} catch (Exception exception) {
			System.out.println("Occur a error in " + getClass()
					+ ".pageData() : " + exception.getMessage());
			// exception.printStackTrace();
		} finally {
			this.CloseDB();
		}
		return results;
	}

	/**
	 * 返回当前数据库中记录的总数.
	 * 
	 * @return int 记录总数
	 */
	public int getTotalCount() {
		this.ConnectDB();
		int allCount = -1;
	//	String tableName = "linkman";// 要处理的表格名
	//	countSql = "SELECT COUNT(*) FROM " + tableName;
		ResultSet rs = null;
		Statement stmt = null;
		try {
			// TODO: open connection
			stmt = conn.createStatement();
			rs = stmt.executeQuery(countSql);
			if (rs.next()) {
				allCount = rs.getInt(1);
			}
		} catch (Exception exception) {
			System.out.println("Occur a error in " + getClass()
					+ ".recordCount() : " + exception.getMessage());
		} finally {
			
			this.CloseDB();
		}
		return allCount;
	}

	/**
	 * 获取总页面数.
	 * 
	 * @param pageSize
	 *            一页显示数据量
	 * @return 页面总数
	 */
	public int getTotalPage() {
		int totalCount = getTotalCount();
		// 得到页面总数
		int totalPageCount = ((totalCount + pageSize) - 1) / pageSize;
		return totalPageCount;
	}
	

	/**
	 * Test page.
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		// 分页, 读取第一页数据, 共读取5 个记录
		Pager pager=new Pager(3);
		if(pager.getCountSql()==null)
			System.out.println("null");
		//System.out.println(pager.getQuerySql()+" "+pager.getCountSql());
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -