最近幾天學習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 *****************************