最近幾天學習jsp覺得很好,寫了個分頁類,給大家分享一下,同時也請高手指點。
第一部分:db.MysqlConn 數據庫鏈接類
/**********************************************************
路徑:zon.db.MysqlConn
文件:MysqlConn.java
用途:數據庫連接
package db; import java.sql.*; import javax.xml.parsers.*; import org.w3c.dom.*; import org.xml.sax.SAXException; import java.io.*; //導入數據庫操作的類 public class MysqlConn { private Connection conn; //連接對象 private Statement stmt; //語句對象 private ResultSet rs; //結果集對象 private String MySqldriver="com.mysql.jdbc.Driver"; //MYSQL Server驅動程序字符串 private String MySqlURL = "jdbc:mysql://"; //MYSQL Server連接字符串 String databasex; String webRealPath="D://zon//WebRoot//"; //根路徑實際路徑,用於讀取數據庫鏈接參數的配置文件 database.xml // 定義數據庫鏈接參數變量 String server="localhost"; String dbname="phpzon"; String user="admin"; String pass="admin"; String port="3306"; String dbchara="utf-8"; String dbprefix="zon_"; //表前綴 public void setDatabasex(String databasex){ this.databasex = databasex; } public String getDatabasex(){ return databasex; } public void setWebRealPath(String webRealPath){ this.webRealPath = webRealPath; } public String getWebRealPath(){ return webRealPath; } /******************************************************************* * 用 com.mysql.jdbc.Driver 驅動 * 該方法取得連接所需各種參數,組成連接字符串, * 然後再建立連接* server;dbname,user,pass,port * 分別表示MYSQL 服務器的地址、數據庫名、用戶名、密碼、端口, * 本方法已作改造,直接通過配置文件 WEB-INF//database.xml 讀取鏈接信息 ********************************************************************/ public Connection getMysqlConn() { //根據數據庫配置文件獲得數據庫鏈接參數 database.xml //建立解析工廠 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setIgnoringElementContentWhitespace(true);//忽略元素內容中的空格 //創建解析器 DocumentBuilder dbxml; try { dbxml = factory.newDocumentBuilder(); //得到解析文件 Document doc; try { doc = dbxml.parse("file:///"+webRealPath+"WEB-INF//database.xml"); doc.normalize(); //得到根元素 //Element root = doc.getDocumentElement(); //得到所有db元素 //NodeList dbs = doc.getElementsByTagName("db"); //NodeList dbType = doc.getElementsByTagName("type"); NodeList dbDriver = doc.getElementsByTagName("driver"); NodeList dbUrl = doc.getElementsByTagName("url"); NodeList dbServer = doc.getElementsByTagName("server"); NodeList dbPort =doc.getElementsByTagName("port"); NodeList dbDbname =doc.getElementsByTagName("dbname"); NodeList dbUser =doc.getElementsByTagName("user"); NodeList dbPassword =doc.getElementsByTagName("password"); NodeList dbChara =doc.getElementsByTagName("chara"); NodeList dbPrefix =doc.getElementsByTagName("prefix"); //獲取各參數值 int i=0; MySqldriver = dbDriver.item(i).getFirstChild().getNodeValue(); //MYSQl驅動程序 MySqldriver = "com.mysql.jdbc.Driver"; MySqlURL = dbUrl.item(i).getFirstChild().getNodeValue(); //鏈接路徑 "jdbc:mysql://"; server = dbServer.item(i).getFirstChild().getNodeValue(); //數據庫服務器地址 port = dbPort.item(i).getFirstChild().getNodeValue(); //數據庫端口 默認 3306 dbname = dbDbname.item(i).getFirstChild().getNodeValue(); //數據庫名稱 user = dbUser.item(i).getFirstChild().getNodeValue(); //用戶名 pass = dbPassword.item(i).getFirstChild().getNodeValue(); //密碼 dbchara = dbChara.item(i).getFirstChild().getNodeValue(); //數據庫編碼 dbprefix = dbPrefix.item(i).getFirstChild().getNodeValue(); //表名前綴 try{//完整的連接字符串 MySqlURL=MySqlURL+server+":"+port+"/"+dbname+"?user="+user+"&password="+pass+"&useUnicode=true&characterEncoding="+dbchara; Class.forName(MySqldriver); conn = DriverManager.getConnection(MySqlURL); } catch(Exception e){ System.out.println("操作數據庫出錯,請仔細檢查"); System.err.println(e.getMessage()); } } catch (SAXException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (ParserConfigurationException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } return conn; } /* * 執行sql 語句,返回記錄集 ,主要針對 select、show語句 */ public ResultSet sqlQuery(String sql){ sql=SetQuery(sql); Statement temStmt = null; //語句對象 ResultSet temRs = null; //結果集對象 Connection temConn=this.getMysqlConn(); try { temStmt=temConn.createStatement(); //執行sql查詢語句,得到記錄集 temRs=temStmt.executeQuery(sql); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return temRs; } /* * 執行Insert sql 語句 */ public void sqlInsert(String sql){ sql=SetQuery(sql); try { this.getMysqlConn().createStatement().executeUpdate(sql); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /* * 執行update sql 語句 */ public void sqlUpdate(String sql){ sql=SetQuery(sql); try { this.getMysqlConn().createStatement().executeUpdate(sql); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /* * 執行delete sql 語句 */ public void sqlDelete(String sql){ sql=SetQuery(sql); try { this.getMysqlConn().createStatement().executeUpdate(sql); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /* * 執行sql 語句,返回記錄總數 ,主要針對 select語句 */ public int sqlTotalRow(String sql){ Statement temStmt = null; //語句對象 ResultSet temRs = null; //結果集對象 int result = 0; //結果值 Connection temConn=this.getMysqlConn(); try { temStmt=temConn.createStatement(); //執行sql查詢語句,得到記錄集 temRs=temStmt.executeQuery(sql); temRs.last(); result = temRs.getRow(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return result; } //設置SQL語句,會自動把SQL語句裡的#@__替換為 配置文件中的 表 前綴 zon_ public String SetQuery(String sql) { String prefix="#@__"; sql = sql.replace(prefix, this.dbprefix); return sql; } //關閉數據庫連接 public void close(){ try{ //rs.close(); //stmt.close(); conn.close(); } catch(SQLException sqlexception){ sqlexception.printStackTrace(); } } }
第二部分: db.MysqlPages 分頁類代碼
/********************************************************** 路徑:zon.db.MysqlPages 文件:MysqlPages.java 用途:優化的分頁 ***********************************************************/ package db; import java.sql.*; import db.MysqlConn; //數據庫鏈接類 /********************************************************** *功能: *標記: *作者:劉亞東 Yodon.Liu *日期:2009-8-30 下午09:20:12 *****************************