视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
c3p0连接池模板
2020-11-09 14:18:17 责编:小采
文档


连接池是创建和管理一个连接的缓冲池的技术,这些连接准备好被任何需要它们的线程使用。 我现在做一个p3c0连接池的模板。 首先p3c0是开源的,所以去官网下载p3c0的jar包。在工程中导入,同时要下载你连接数据库的驱动 连接池模板代码如下: package com.fish

连接池是创建和管理一个连接的缓冲池的技术,这些连接准备好被任何需要它们的线程使用。

我现在做一个p3c0连接池的模板。

首先p3c0是开源的,所以去官网下载p3c0的jar包。在工程中导入,同时要下载你连接数据库的驱动

连接池模板代码如下:

package com.fish;



import java.beans.PropertyVetoException;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.ResourceBundle;



import com.mchange.v2.c3p0.ComboPooledDataSource;



/**

* 连接数据库的工具类,被定义成不可继承且是私有访问

*/

public final class DBTool {

//采用配置文件的方式配置连接池的一些信心,这个是配置文件的名字

final private static String OPTION_FILE_NAME = "mysqldatabase";

private static Connection conn;



static ResourceBundle res;

//连接池的类

static ComboPooledDataSource cpds;



static {

//从配置文件中获取文件

res = ResourceBundle.getBundle(OPTION_FILE_NAME);

//创建一个连接池

cpds = new ComboPooledDataSource();

//驱动名

String driver = res.getString("jdbc.driver");

//连接url

String url = res.getString("jdbc.url");

//数据库用户名

String user = res.getString("jdbc.username");

//数据库密码

String password = res.getString("jdbc.password");

//连接池的最大连接数

String poolMax = res.getString("c3p0.maxPoolSize");

//连接池的最小连接数

String poolMin = res.getString("c3p0.minPoolSize");

//当资源用尽时,允许连接的数目

String PoolAcquireIncrement = res.getString("c3p0.acquireIncrement");



try {

cpds.setDriverClass(driver);

} catch (PropertyVetoException e) {

System.out.println("驱动没找到");

}



cpds.setJdbcUrl(url);

cpds.setUser(user);

cpds.setPassword(password);

cpds.setMinPoolSize(Integer.parseInt(poolMin));

cpds.setAcquireIncrement(Integer.parseInt(PoolAcquireIncrement));

cpds.setMaxPoolSize(Integer.parseInt(poolMax));



}



/**

* 获取数据库的连接

*

* @return conn

*/

public static Connection getConnection() {

try {

conn = cpds.getConnection();

} catch (SQLException e) {

System.out.println("连接失败");

}

return conn;

}



/**

* 释放资源

*

*/

public static void closeJDBC(Connection conn, Statement statement,

ResultSet rs) {

if (null != rs) {

try {

rs.close();

} catch (SQLException e) {

e.printStackTrace();

throw new RuntimeException(e);

} finally {

if (null != statement) {

try {

statement.close();

} catch (SQLException e) {

e.printStackTrace();

throw new RuntimeException(e);

} finally {

if (null != conn) {

try {

conn.close();

} catch (SQLException e) {

e.printStackTrace();

throw new RuntimeException(e);

}

}

}

}

}

}

}

}

2.mysqldatabase.properties文件如下:

jdbc.driver=com.mysql.jdbc.Driver

jdbc.url=jdbc:mysql://127.0.0.1:3306/datacenter3

jdbc.username=root

jdbc.password=1234

c3p0.maxPoolSize = 30

c3p0.minPoolSize = 10

c3p0.acquireIncrement =10
以后你要连接什么数据库直接在这个文件里面修改。



测试:例子

package com.fish;

public class Test2 {

public static void main(String[] args) throws Exception {

System.out.println(DBTool.getConnection());

}

}


输出结果: 2014-11-16 14:44:04 com.mchange.v2.log.MLog 信息: MLog clients using java 1.4+ standard logging. 2014-11-16 14:44:04 com.mchange.v2.c3p0.C3P0Registry banner 信息: Initializing c3p0-0.9.2.1 [built 20-March-2013 11:16:28 +0000; debug? true; trace: 10] 2014-11-16 14:44:04 com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource getPoolManager 信息: Initializing c3p0 pool... com.mchange.v2.c3p0.ComboPooledDataSource [ acquireIncrement -> 10, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, dataSourceName -> 1hge1d1951evdfumup12ui|5ffb18, debugUnreturnedConnectionStackTraces -> false, description -> null, driverClass -> com.mysql.jdbc.Driver, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, identityToken -> 1hge1d1951evdfumup12ui|5ffb18, idleConnectionTestPeriod -> 0, initialPoolSize -> 3, jdbcUrl -> jdbc:mysql://127.0.0.1:3306/datacenter3, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 0, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 30, maxStatements -> 0, maxStatementsPerConnection -> 0, minPoolSize -> 10, numHelperThreads -> 3, preferredTestQuery -> null, properties -> {user=******, password=******}, propertyCycle -> 0, statementCacheNumDeferredCloseThreads -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 0, userOverrides -> {}, usesTraditionalReflectiveProxies -> false ] com.mchange.v2.c3p0.impl.NewProxyConnection@d19bc8

下载本文
显示全文
专题