使用DBCP
package com.datasource;
import java.sql.Connection;
import java.sql.Statement;
import org.apache.commons.dbcp.BasicDataSource;
public class DBConn
{
private static DBConn dc;
private Connection conn = null;
private Statement stmt = null;
private DBConn()
{
}
public static DBConn instance()
{
if (dc == null)
{
dc = new DBConn();
}
return dc;
}
public Statement openStmt()
{
if (stmt == null)
{
conn = getConn();
try
{
stmt = conn.createStatement();
}
catch (Exception e)
{
System.err.println("创建Statement异常: " + e.getMessage());
}
}
return stmt;
}
public void closeStmt()
{
if (stmt != null)
{
try
{
stmt.close();
}
catch (Exception e)
{
System.err.println("Statement关闭异常");
}
}
if (conn != null)
{
try
{
conn.close();
}
catch (Exception e)
{
System.err.println("数据库关闭异常");
}
}
}
private Connection getConn()
{
if (conn == null)
{
try
{
BasicDataSource ds = new BasicDataSource();
ds.setDriverClassName("com.mysql.jdbc.Driver");
ds.setUrl("jdbc:mysql://localhost:3306/j2ee");
ds.setUsername("root");
ds.setPassword("123456");
conn = ds.getConnection();
}
catch (Exception e)
{
e.printStackTrace();
}
}
return conn;
}
}
使用C3P0:
package com.datasource;
import java.sql.Connection;
import java.sql.Statement;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class DBConnC3p0
{
private static DBConnC3p0 dc;
private Connection conn = null;
private Statement stmt = null;
private DBConnC3p0()
{
}
public static DBConnC3p0 instance()
{
if (dc == null)
{
dc = new DBConnC3p0();
}
return dc;
}
public Statement openStmt()
{
if (stmt == null)
{
conn = getConn();
try
{
stmt = conn.createStatement();
}
catch (Exception e)
{
System.err.println("创建Statement异常: " + e.getMessage());
}
}
return stmt;
}
public void closeStmt()
{
if (stmt != null)
{
try
{
stmt.close();
}
catch (Exception e)
{
System.err.println("Statement关闭异常");
}
}
if (conn != null)
{
try
{
conn.close();
}
catch (Exception e)
{
System.err.println("数据库关闭异常");
}
}
}
public Connection getConn()
{
if (conn == null)
{
try
{
ComboPooledDataSource ds = new ComboPooledDataSource();
ds.setDriverClass("com.mysql.jdbc.Driver");
ds.setJdbcUrl("jdbc:mysql://localhost:3306/j2ee");
ds.setUser("root");
ds.setPassword("32147");
ds.setMaxPoolSize(40);
ds.setMinPoolSize(2);
ds.setMaxStatements(180);
conn = ds.getConnection();
}
catch (Exception e)
{
e.printStackTrace();
}
}
return conn;
}
}
分享到:
相关推荐
本示例中的"简单的jdbc连接池类"实现了一个基本的数据库连接池功能,非常适合初学者理解和实践。 首先,我们来理解`jdbc`。JDBC(Java Database Connectivity)是Java语言用来与各种数据库进行交互的一种标准接口。...
而通过使用连接池,我们可以预先创建并维护一定数量的FTP连接,供多个并发任务共享,从而减少连接创建和关闭的开销。 FTP连接池的核心概念包括: 1. 连接池管理:连接池维护了一组FTP连接,根据需求分配或回收这些...
这样的工具类通常包含初始化连接池、获取连接、释放连接以及关闭连接池等方法。 其次,新版本ActiveMQ自带的连接池服务,也称为PooledConnectionFactory,是官方推荐的连接管理方式。它提供了自动管理和维护连接的...
在实际开发中,使用 Delphi DataSnap 的连接池类需要了解如何正确配置和使用这些类,确保它们与你的数据库架构和应用需求相匹配。这包括理解数据库驱动的兼容性、连接参数的设置,以及在多线程和高并发环境下的性能...
本文将深入探讨“一个好用的连接池类”,以及如何将其应用到数据库连接和其他资源分配中。 首先,连接池类的基本思想是预先创建一定数量的数据库连接,并将它们保存在一个池中。当应用程序需要连接时,可以从池中...
下面将详细介绍这两种连接池的使用以及它们的配置参数。 1. **Apache DBCP (BasicDataSource)** Apache的DBCP是Spring早期常见的连接池实现。在示例配置中,可以看到`<bean>`标签定义了一个名为`dataSource`的...
本文将深入讲解如何在Java环境中,特别是Tomcat服务器中配置和使用连接池,以及通过JNDI(Java Naming and Directory Interface)查找和使用数据源。 首先,连接池的配置通常在应用服务器的配置文件中完成。在...
如果一个连接长时间未使用或者服务器已经关闭了连接,OkHttp会将其从连接池中移除,防止资源浪费。 3. **连接池的大小限制**:为了防止过多的连接占用系统资源,OkHttp为每个主机名设定了连接数量的最大值。超出这...
本篇文章将深入解析一个自定义的JAVA数据库连接池类,帮助开发者更好地理解和运用这一关键技术。 首先,连接池的基本思想是预先创建一定数量的数据库连接,并存储在一个集合(如Vector)中,供应用程序按需获取和...
5. **超时与回收**:连接池会设定每个连接的最大生命周期,超过这个时间未被使用的连接会被自动回收,防止因长时间未使用的“僵尸”连接占用资源。 ### C#中的数据库连接池实现 在C#中,主要使用ADO.NET框架来实现...
首先,我们需要定义一个连接池类,它通常包含以下组件: 1. **连接池容量**:定义了池中最大可以保存的连接数量,这是连接池大小的一个上限。 2. **空闲连接列表**:存储当前未被使用的数据库连接。 3. **已借用...
下面将详细讲解Proxool连接池的使用方法及其核心概念。 1. **Proxool简介** Proxool是Apache软件基金会的一个开源项目,它提供了一个轻量级的数据库连接池实现。Proxool通过创建一个数据库连接池来管理数据库连接...
在实际开发中,为了更好地管理和监控连接池,我们还可以记录每个连接的使用情况,比如连接的生命周期、使用频率等,以便于优化连接池的配置,提高系统资源的利用率。 总的来说,Java Socket连接池是解决高并发网络...
在企业级应用中,为了提高消息处理的效率和稳定性,通常会使用连接池来管理与ActiveMQ服务器的连接。本文将详细介绍如何实现一个ActiveMQ连接池的完整封装实例工具类,并探讨其背后的设计思想。 首先,我们需要了解...
在C#中,可以使用`System.Data.Common.DbConnection`作为基类,创建自定义的数据库连接类,然后在此基础上实现连接池逻辑。 4. **源码分析**: `ConnectionPool.sln`是解决方案文件,包含项目的整体配置和依赖关系...
我自行开发的一套Java平台的数据库连接池类,内部使用的是线程控制,其详细原理说明在CSDN进其将有所发布,届时也有源代码结实说明,该压缩文件中包含连接池运行的jar文件和其帮助手册中文版,未竟严格代码测试) ...
我自行开发的一套Java平台的数据库连接池类,内部使用的是线程控制,其详细原理说明在CSDN进其将有所发布,届时也有源代码结实说明,该压缩文件中包含连接池运行的jar文件和其帮助手册中文版,(未竟严格代码测试) ...
在Delphi中,我们可以使用TDBXConnectionPool组件或者自定义类来实现数据库连接池。TDBXConnectionPool是IBX(InterBase XE)库的一部分,它可以管理和复用数据库连接。如果选择自定义,我们需要设计一个类来维护...