开发者博客:www.developsearch.com
package com.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Date;
import java.util.LinkedList;
public class DBConnetion {
public static DBConnetion dbconn = null;
private String driver = "com.mysql.jdbc.Driver";
private String url = "jdbc:mysql://127.0.0.1:3306/project?useUnicode=true&characterEncoding=gbk";
private String username = "username ";
private String password = "password ";
private LinkedList<Connection> pool = new LinkedList<Connection>();
private int initCount = 10;
private int maxCount = 20;
int currentCount = 0;
public static void main(String[] args) {
try {
long time1 = new Date().getTime();
dbconn = new DBConnetion();
for(int i = 1;i<= 20;i++){
DBThreadTest dt = new DBThreadTest();
dt.start();
}
long time3 = new Date().getTime();
System.out.println(time3 - time1);
} catch (Exception e) {
e.printStackTrace();
}
}
public DBConnetion() {
try {
Class.forName(driver); // 加载驱动
} catch (Exception e) {
e.printStackTrace();
}
for (int i = 0; i < initCount; i++) {
this.pool.addLast(createConnection());
this.currentCount++;
}
}
public static boolean executeBySql(String sql){
try {
Connection conn = dbconn.getConnection();
Statement stat=conn.createStatement();
int num = stat.executeUpdate(sql);
stat.close();
return num>0?true:false;
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
public Connection getConnection() {
synchronized (pool) {
try {
if (this.pool.size() > 0) {
Connection conn = pool.removeFirst();
removeConn(conn);
return conn;
}
if (this.currentCount < maxCount) {
return createConnection();
}
} catch (Exception e) {
e.printStackTrace();
return getConnection();
}
return getConnection();
}
}
public void removeConn(Connection conn) {
pool.addLast(conn);
}
public Connection createConnection() {
Connection conns = null;
try {
conns = DriverManager.getConnection(url, username, password);
} catch (SQLException e) {
System.out.println("创建链接失败");
}
return conns;
}
public LinkedList<Connection> getPool() {
return pool;
}
public void setPool(LinkedList<Connection> pool) {
this.pool = pool;
}
}
相关推荐
JDBC 提供两种 API,分别是面向开发人员的 API 和面向底层的 JDBC 驱动程序 API,底层主要通过直接的 JDBC 驱动和 JDBC-ODBC 桥驱动实现与数据库的连接。一般来说,Java 应用程序访问数据库的过程是:装载数据库驱动...
5. **连接池**:可以通过`jdbc_pool_timeout`、`jdbc_validate_connection`等设置,优化数据库连接的管理和性能。 **应用场景** - 日志分析:将日志数据存储到数据库,便于进行复杂SQL查询和报表生成。 - 实时监控...
2. C3P0:这是一个开源的JDBC连接池,提供了比DBCP更高级的功能,如连接测试、空闲连接检测、自动扩展等。C3P0通过组合多个数据源来实现连接池,可以更好地控制并发和资源管理。 这些jar包的收集意味着开发者可以...
Oracle JDBC驱动主要有四种类型: Thin、 Thick、JDBC-ODBC Bridge和Universal Driver,其中 Thin 驱动是最常用的一种,因为它是一种轻量级的纯Java实现,无需在客户端安装Oracle数据库客户端软件。 ojdbc8-资源....
在这个文件中,我们可以配置JDBC连接池,同时指定字符集,确保数据传输时的编码一致性。例如: ```xml ${jdbc.url}" /> ${jdbc.username}" /> ${jdbc.password}" /> ...
### JDBC-Oracle-Thin 驱动介绍与配置详解 #### 一、JDBC-Oracle-Thin 概述 在数据库连接技术中,Java Database Connectivity (JDBC) 是一种用于执行 SQL 语句的标准 Java API,可以为多种关系数据库提供统一访问...
Spring Boot 连接 Oracle 数据库 JDBC 配置步骤 在本文中,我们将详细介绍如何使用 Spring Boot 连接 Oracle 数据库,配置 JDBC 驱动程序,并实现数据库的基本操作。 Step 1: 添加依赖项 在 Spring Boot 项目中,...
Oracle JDBC驱动程序是Oracle公司提供的一种Java数据库连接(JDBC)接口,用于在Java应用程序中与Oracle数据库进行交互。在Oracle-jdbc-12.2.0.1.zip压缩包中,包含了Oracle JDBC驱动的特定版本,即12.2.0.1,这是...
例如,通过`Class.forName()`方法加载Oracle JDBC驱动,然后使用`DriverManager.getConnection()`创建数据库连接。 为了在Web项目中使用Oracle JDBC驱动,通常需要将对应的JAR包添加到项目的类路径中。在传统的Web...
【标题】中的“29-数据库与JDBC-第3天(DBCP连接池及DBUtils”揭示了本次讨论的主题,主要围绕数据库、Java数据库连接(JDBC)以及两个重要的工具——DBCP连接池和DBUtils。这是一次关于数据库管理和优化的课程,...
1. **BasicDataSource**:这是DBCP提供的核心类,用于创建数据库连接池。 2. **ThreadLocal**:用于保存每个线程的本地副本数据,本例中用来保存当前线程的数据库连接。 3. **Properties**:用于加载配置文件中的...
总的来说,这段代码展示了如何使用JDBC连接Oracle数据库,并通过连接池进行管理。使用这种方式可以显著提高Web应用程序的性能,减少由于频繁建立和关闭数据库连接带来的开销。在实际项目中,还需要考虑异常处理、...
1. **选择连接池实现**:首先,我们需要选择一个合适的数据库连接池实现,如Apache的DBCP、C3P0、HikariCP或Tomcat JDBC连接池等。这些连接池库提供了管理和维护数据库连接的功能。 2. **配置连接池**:在应用的...
- **连接池**:为了提高性能和资源利用率,通常会使用连接池管理数据库连接,如C3P0、HikariCP等。 总的来说,Oracle 19c的JDBC驱动提供了一个高效、可靠的途径来用Java编程语言与Oracle数据库进行交互。正确理解和...
**使用Oracle JDBC驱动进行数据库连接**: 1. **下载与引入**: 首先,你需要将"oracle-jdbc.zip"解压,选择适合你的数据库版本的ojdbc驱动(ojdbc8或ojdbc10),然后将.jar文件添加到你的Java项目的类路径中,或者...
连接池可以复用已有的数据库连接,避免每次请求都创建和销毁连接所带来的开销。通过维护一定数量的空闲连接,连接池可以在应用程序请求连接时迅速响应,从而提高整体的响应速度和系统吞吐量。 文档中展示了一个名为...
c3p0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。c3p0提供了一些高级功能,如自动检测坏连接并尝试恢复,自动调整连接池大小,以及空闲连接测试等,这些功能可以显著提高...
2. **创建数据库连接** - 使用`DriverManager.getConnection()`方法创建与Oracle数据库的连接: ```java Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:mldn", "username",...
4. **建立连接**:使用`DriverManager.getConnection()`方法创建数据库连接: ```java String url = "jdbc:oracle:thin:@hostname:port/service_name"; String username = "your_username"; String password = ...