PoolDbSource 类
[java]view plaincopyprint?
package com.***.connectionpool.db;
import java.sql.Connection;
import java.sql.SQLException;
import javax.sql.PooledConnection;
import oracle.jdbc.pool.*;
public class PoolDbSource
{
private static PoolDbSource instance;
private OracleConnectionPoolDataSource ocpds;
private PoolDbSource() throws SQLException{
ocpds = new OracleConnectionPoolDataSource();
ocpds.setDriverType("thin");
ocpds.setServerName("202.112.119.177");
ocpds.setNetworkProtocol("tcp");
ocpds.setDatabaseName("orcl");
ocpds.setPortNumber(1521);
ocpds.setUser("idc_yjs");
ocpds.setPassword("yjs");
}
/**
* 返回唯一实例.如果是第一次调用此方法,则创建实例
*
* @return PoolDbSource 唯一实例
* @throws SQLException
*/
static synchronized public PoolDbSource getInstance()
{
if (instance == null)
{
synchronized (PoolDbSource.class) // 加锁
{
if(instance == null) // 第二次检查
{
try
{
instance = new PoolDbSource();
}
catch (SQLException e)
{
System.out.print("=================================");
System.out.print("链接数据库失败!");
System.out.print("=================================");
System.out.print("错误信息:");
e.printStackTrace();
return null;
}
}
}
}
return instance;
}
/**
* 取得数据库连接
* @return
*/
public Connection getConnection()
{
PooledConnection pc; // 数据库连接池连接
Connection conn; // 数据库连接对象
try
{
pc = ocpds.getPooledConnection(); // 从连接池获取连接
conn = pc.getConnection();
}
catch (SQLException e)
{
System.out.print("=================================");
System.out.print("获得数据库连接失败!");
System.out.print("=================================");
System.out.print("错误信息:");
e.printStackTrace();
return null;
}
return conn;
}
}
BaseManager 类
[java]view plaincopyprint?
package com.***.connectionpool.common;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.***.connectionpool.db.PoolDbSource;
public class BaseManager {
PoolDbSource poolDbSource; //数据源连接管理对象
Connection conn; // 数据库连接对象
public BaseManager()
{
super();
}
/**
* 执行查询语句返回数据集
* @param sql
* @return
*/
public ResultSet executeQuerySql(String sql)
{
Statement statement;
ResultSet rs = null;
try
{
poolDbSource = PoolDbSource.getInstance();
conn = poolDbSource.getConnection();
statement = conn.createStatement();
rs = statement.executeQuery(sql);
}
catch (SQLException e)
{
e.printStackTrace();
}
finally
{
// if(conn!=null)
// 因为他们有自己的数据结构,所以在这个方
// 法中实际返回的应该是他们的数据结构类型而不是ResultSet,
// 这里返回的是ResultSet所以在这里关闭conn会导致返回的rs无法使用。暂时注释掉了
// {
// try
// {
// conn.close();
// }
// catch (SQLException e)
// {
// System.out.print("关闭数据库连接出现异常。");
// }
// }
}
return rs;
}
}
ConnectionPoolTestAction
[java]view plaincopyprint?
package com.***.connectionpool.sources;
import java.sql.ResultSet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.***.connectionpool.common.BaseManager;
public class ConnectionPoolTestAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception
{
BaseManager baseManager = new BaseManager();
ResultSet rs = baseManager.executeQuerySql("SELECT * FROM code_school where xsbz = '0'");
if(rs.next())
{
request.setAttribute("lsh", rs.getString(1));
request.setAttribute("zgh", rs.getString(2));
}
return mapping.findForward("success"); // 返回到一个测试页面读取request.setAttribute的两个变量
}
}
JAVA数据库连接池例子
最新推荐文章于 2024-03-26 08:05:30 发布