最近几天学习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 *****************************