您的位置:首页 > 数据库 > MySQL

使用连接池的方式连接数据库:使用DBUtil连接MYSQL数据库

2012-07-28 11:11 567 查看
package blog.util;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

import blog.exception.DBException;

public class DBUtil {

private static DataSource ds = null;

/**
* 从数据库连接池获得一个数据库连接
* @return 数据库连接
* @throws DBException
*/
public static Connection getConnection() throws DBException {

//用数据库连接池的方式实现,JNDI
try {
if(ds == null){
Context context = new InitialContext();
ds = (DataSource) context.lookup("java:comp/env/jdbc/pmdb");
}

return ds.getConnection();
} catch (NamingException e) {
throw new DBException("数据库连接池查找失败", e);
} catch (SQLException e) {
throw new DBException("获取数据库连接异常", e);
}

}

public static PreparedStatement getPreparedStatement(Connection conn, String sql) throws DBException {
PreparedStatement pstmt = null;
try {
if (conn != null) {
pstmt = conn.prepareStatement(sql);
}
} catch (SQLException e) {
throw new DBException("创建执行语句失败", e);
}
return pstmt;
}

public static PreparedStatement getPreparedStatement(Connection conn, String sql, int autoGenereatedKeys) throws DBException {
PreparedStatement pstmt = null;
try {
if (conn != null) {
pstmt = conn.prepareStatement(sql, autoGenereatedKeys);
}
} catch (SQLException e) {
throw new DBException("创建执行语句失败", e);
}
return pstmt;
}

public static Statement getStatement(Connection conn) throws DBException {
Statement stmt = null;
try {
if (conn != null) {
stmt = conn.createStatement();
}
} catch (SQLException e) {
throw new DBException("创建执行语句失败", e);
}
return stmt;
}

public static ResultSet getResultSet(Statement stmt, String sql) throws DBException {
ResultSet rs = null;
try {
if (stmt != null) {
rs = stmt.executeQuery(sql);
}
} catch (SQLException e) {
throw new DBException("获得查询结果集失败:" + sql, e);
}
return rs;
}

public static void executeUpdate(Statement stmt, String sql) throws DBException {
try {
if (stmt != null) {
stmt.executeUpdate(sql);
}
} catch (SQLException e) {
throw new DBException("更新失败:" + sql, e);
}
}

/**
* 归还数据库连接
* @param conn 数据库连接实例
* @throws DBException
*/
public static void close(Connection conn) throws DBException {
try {
if (conn != null) {
conn.close(); //把数据库连接归还到数据库连接池,并不是真正的断开数据库的连接
}
} catch (SQLException e) {
throw new DBException("关闭数据库连接异常", e);
}
}

public static void close(Statement stmt) throws DBException {
try {
if (stmt != null) {
stmt.close();
stmt = null;
}
} catch (SQLException e) {
throw new DBException("关闭数据库语句异常", e);
}
}

public static void close(ResultSet rs) throws DBException {
try {
if (rs != null) {
rs.close();
rs = null;
}
} catch (SQLException e) {
throw new DBException("关闭数据库结果集异常", e);
}
}
}


<Context reloadable="true">
<Resource name="jdbc/pmdb" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="root" password="1234"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/pmdb?useUnicode=true&characterEncoding=utf-8">
</Resource>
</Context>


<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 
<resource-ref>
<res-ref-name>jdbc/pmdb</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

</web-app>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: