Web项目配置数据源——c3p0_properties

web项目-->WebRoot-->WEB-INF导入C3P0的jar包(c3p0-0.9.1.2.jar)、数据库驱动jar包(ojdbc14.jar)

web项目-->src-->新建c3p0.properties文件并进行配置:

#数据库信息相关参数
c3p0.driverName=oracle.jdbc.driver.OracleDriver
c3p0.url=jdbc:oracle:thin:@localhost:1521:XE
c3p0.userName=
c3p0.pwd=
#连接池相关参数
c3p0.minPoolSize=10
c3p0.maxPoolSize=100
c3p0.maxIdleTime=60
c3p0.initialPoolSize=10


web项目-->src-->com.niit.util-->DBUtil.java

package com.niit.util;

import java.beans.PropertyVetoException;

import java.util.Map;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class DBUtil {

private static ComboPooledDataSource ds = null;

private DBUtil(){}

static{

Map<String,String> kvs = PropertiesUtil.getKvs("c3p0.properties");
ds = new ComboPooledDataSource();
try {
ds.setDriverClass(kvs.get("c3p0.driverName"));
ds.setJdbcUrl(kvs.get("c3p0.url"));
ds.setUser(kvs.get("c3p0.userName"));
ds.setPassword(kvs.get("c3p0.pwd"));
ds.setMinPoolSize(Integer.parseInt(kvs.get("c3p0.minPoolSize")));
ds.setMaxPoolSize(Integer.parseInt(kvs.get("c3p0.maxPoolSize")));
ds.setMaxIdleTime(Integer.parseInt(kvs.get("c3p0.maxIdleTime")));
ds.setInitialPoolSize(Integer.parseInt(kvs.get("c3p0.initialPoolSize")));
} catch (PropertyVetoException e) {
System.out.println("配置数据源失败!");
// e.printStackTrace();
}

public synchronized static Connection getConnection(){
Connection con = null;
try {
con = ds.getConnection();
} catch (SQLException e) {
System.out.println("获取数据库连接失败!");
// e.printStackTrace();
}

return con;
}

public static void main(String[] args) {
System.out.println(getConnection());
}
}




web项目-->src-->com.niit.util-->PropertiesUtil.java

package com.niit.util;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import java.util.Map.Entry;


public class PropertiesUtil {

private PropertiesUtil(){}

public static Map<String,String> getKvs(String path){
Properties prop = new Properties();
Map<String,String> map = new HashMap<String, String>();
try{
prop.load(PropertiesUtil.class.getClassLoader().getResourceAsStream(path));
Set<Entry<Object,Object>> set = prop.entrySet();
for(Entry<Object,Object> e : set){
map.put(String.valueOf(e.getKey()), String.valueOf(e.getValue()));
}
}catch(IOException e){
System.out.println("读取配置文件失败!");
// e.printStackTrace();
}
return map;
}


public static void closeResource(ResultSet rs,Statement stmt,Connection con){

try {
if(rs != null){
rs.close();
}
if(stmt != null){
stmt.close();
}
if(con != null){
con.close();
}
}catch (SQLException e) {
System.out.println("关闭资源失败!");
// e.printStackTrace();
}
}


}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用配置类的方式管理数据对象c3p0,可以避免在代码中硬编码数据相关的配置信息,使得应用程序更加灵活和易于维护。下面是一个示例代码: 1. 首先创建一个名为DataSourceConfig的Java类,用于管理数据配置信息: ```java import com.mchange.v2.c3p0.ComboPooledDataSource; import java.beans.PropertyVetoException; import java.sql.Connection; import java.sql.SQLException; public class DataSourceConfig { private static ComboPooledDataSource dataSource = new ComboPooledDataSource(); static { try { dataSource.setDriverClass("com.mysql.jdbc.Driver"); dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/test"); dataSource.setUser("root"); dataSource.setPassword("root"); // 设置连接池的一些参数 dataSource.setMaxPoolSize(50); dataSource.setMinPoolSize(10); dataSource.setInitialPoolSize(10); dataSource.setAcquireIncrement(5); dataSource.setMaxIdleTime(60); } catch (PropertyVetoException e) { e.printStackTrace(); } } public static Connection getConnection() throws SQLException { return dataSource.getConnection(); } } ``` 2. 在需要使用数据的地方,通过调用`DataSourceConfig.getConnection()`方法获取数据库连接。 ```java import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class Test { public static void main(String[] args) { Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { conn = DataSourceConfig.getConnection(); pstmt = conn.prepareStatement("select * from user"); rs = pstmt.executeQuery(); while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); String gender = rs.getString("gender"); System.out.println("id: " + id + ", name: " + name + ", gender: " + gender); } } catch (SQLException e) { e.printStackTrace(); } finally { try { if (rs != null) rs.close(); if (pstmt != null) pstmt.close(); if (conn != null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } ``` 这样,通过配置类的方式管理数据对象c3p0就完成了。可以通过修改`DataSourceConfig`类中的配置信息来调整数据的相关参数,从而达到更好的性能和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值