www.pudn.com > MyPageTest.rar > UserDAO.java


package com.dao; 
 
import java.sql.Connection; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 
import java.util.ArrayList; 
import java.util.List; 
 
import com.pojo.Uer; 
 
/** 
 * 分页 
 * @author 孔国安 2008年3月10日 
 * 用了2个小时总算搞定了。。。哎。。。中午又是一顿饼干汉。。。 
 *  
 * 说明!!其实这里的关闭方法是没有被用到的,这里主要是演示的是 
 * 分页所以数据库的增删改查方法就没有必要做过多的说明 
 *  
 *作者联系qq:158520812 
 */ 
public class UserDAO { 
	 
	Connection conn = null; 
 
	PreparedStatement pstmt = null; 
 
	ResultSet rs = null; 
public void insert(int num){ 
	 
	conn=com.opendb.OpenDB.conn(); 
	String sql="INSERT INTO `user` (`id`,`name`) VALUES (NULL,?)"; 
	try { 
		pstmt=conn.prepareStatement(sql); 
		pstmt.setLong(1,num); 
		pstmt.execute(); 
	} catch (SQLException e) { 
		// TODO 自动生成 catch 块 
		e.printStackTrace(); 
	} 
} 
	public void close() { 
		if (conn != null) { 
			try { 
				conn.close(); 
			} catch (SQLException e) { 
				// TODO Auto-generated catch block 
				e.printStackTrace(); 
			} 
			conn = null; 
		} 
		if (pstmt != null) { 
			try { 
				pstmt.close(); 
			} catch (SQLException e) { 
				// TODO Auto-generated catch block 
				e.printStackTrace(); 
			} 
			pstmt = null; 
		} 
		if (rs != null) { 
			try { 
				rs.close(); 
			} catch (SQLException e) { 
				// TODO Auto-generated catch block 
				e.printStackTrace(); 
			} 
			rs = null; 
		} 
 
	} 
 
	/** 
	 * @return all user 
	 */ 
	public ArrayList list() { 
 
		conn = com.opendb.OpenDB.conn(); 
		ArrayList al = new ArrayList(); 
		Uer user = new Uer(); 
		String sql = "SELECT * FROM user"; 
 
		try { 
			System.out.println(conn); 
			pstmt = conn.prepareStatement(sql); 
			rs = pstmt.executeQuery(); 
 
			while (rs.next()) { 
				user = new Uer(); 
				user.setId(rs.getInt(1)); 
				user.setName(rs.getString(2)); 
				al.add(user); 
			} 
		} catch (Exception e) { 
			// TODO: handle exception 
			e.printStackTrace(); 
			System.out.print("异常!"); 
			al = null; 
		} finally { 
			close(); 
		} 
		return al; 
	} 
 
	/** 
	 * @param 
	 * @return 分页记录 
	 */ 
	public ArrayList page(int num) { 
		conn = com.opendb.OpenDB.conn(); 
		ArrayList al = new ArrayList(); 
		Uer user; 
		String sql = "SELECT * FROM `user` LIMIT ?,2"; 
		try { 
			System.out.println(conn); 
			pstmt = conn.prepareStatement(sql); 
			pstmt.setInt(1, num*2); 
			System.out.println("DAO++++"+num); 
			rs = pstmt.executeQuery(); 
 
			while (rs.next()) { 
				user = new Uer(); 
				user.setId(rs.getInt(1)); 
				user.setName(rs.getString(2)); 
				al.add(user); 
			} 
		} catch (Exception e) { 
			// TODO: handle exception 
			e.printStackTrace(); 
			System.out.print("异常!"); 
			al = null; 
		} finally { 
			close(); 
		} 
		return al; 
	} 
 
	/** 
	 * @return 记录数 
	 */ 
	public int count() { 
		conn = com.opendb.OpenDB.conn(); 
		int count = 0; 
 
		String sql = "SELECT Count(id) FROM user"; 
		try { 
 
			pstmt = conn.prepareStatement(sql); 
			rs = pstmt.executeQuery(); 
			while (rs.next()) { 
				count = rs.getInt(1); 
			} 
 
		} catch (Exception e) { 
			// TODO: handle exception 
			e.printStackTrace(); 
			System.out.print("异常!"); 
 
		} finally { 
			close(); 
		} 
		return count; 
	} 
 
	/** 
	 * @param page 
	 * @param now_page 
	 * @return 将分页的数据显示到页面 
	 */ 
	public String page_cut(int page, int now_page) { 
		System.out.println("DAO--page=" + page + "now_page=" + now_page); 
		String view = null; 
		int dao_now_page = now_page;//临时变量保持传入的当前页面 
		int temp_now_page;//临时变量主要都是操作它 
		if (dao_now_page > 1) {//如果当前页面大约1说明有上一页 
			view += "上一页"; 
		} 
		if (dao_now_page > 3) {//当当前页面大于三的时候前面就使用...省略前面的 
			System.out.println("+++++++++++111111"); 
 
			temp_now_page = now_page - 2;//该变临时变量的值 
			view += "..." + temp_now_page + "";//添加连接 
			temp_now_page = now_page - 1; 
			view += " " + temp_now_page + " ";//添加连接 
			view += "[" + dao_now_page + "]";//当前页不需要任何连接 
			now_page = dao_now_page; 
			if (dao_now_page + 2 < page) {//当当前页+2小于总页数就使用...省略后面的 
				System.out.println("+++++++++++222222"); 
				temp_now_page = now_page + 1;//改变值 
				view += " " + temp_now_page + "";//添加连接 
				temp_now_page = now_page + 2; 
				view += " " + temp_now_page + "..."; 
 
			}  
			else {//当前页加+2>总页数。后面就不使用...省略后面 
				for (int i = dao_now_page; i < page; i++) { 
					System.out.println("+++++++++++3333"); 
					view += " " + (i + 1) + "";//添加练级 
				} 
			} 
		} else {//当当前页面不大于3的时候 
			if (page > 1) {//如果总页数大于1 
				if (dao_now_page + 2 < page) {//当前页+2小于总页数 
					System.out.println("+++++++++444"); 
					for (int i = 1; i <= dao_now_page; i++) { 
						System.out.println("+++++++++555"); 
						if (i != dao_now_page) {//判断是否是当前页 
							view += " " + i + "";//为当前页面的前面页面添加连接 
						} else { 
							view += "[" + i + "]";//当前页不添加连接 
						} 
					} 
					temp_now_page = now_page + 1;//当前页的下一页 
					view += " " + temp_now_page + "";//添加连接 
					temp_now_page = now_page + 2;//当前页的下2页 
					view += " " + temp_now_page + "...";//添加连接连接上。。。省略后面的数字 
 
				} else {//当前页面+2大于了页数说明后面的页面不会用...省略 
					for (int i = 0; i < page; i++) { 
						System.out.println("+++++++++666"); 
						int ii=i+1; 
						if(ii==dao_now_page){ 
							view+="["+ii+"]";//不为当前页添加连接 
						}else{ 
						view += " " + ii + "";//添加连接 
						} 
					} 
				} 
			} 
 
		} 
		if ((dao_now_page != page) && (page != 0)) { 
			if(dao_now_page==0){ 
				view += "下一页"; 
			} 
			view += "下一页"; 
		} 
		if (page == 1) { 
 
			view += "[" + page + "]"; 
		} 
        if(page>1){ 
        	view+=""; 
        } 
		return view.replaceAll("null", ""); 
	} 
}