一、环境
1、数据库驱动jar文件
2、DBCP方法
Commons-dbcp.jar:连接池的实现
Commons-pool.jar:连接池实现的依赖库
资源文件
3、c3p0方法:
c3p0-0.9.1.2.jar
配置文件:c3p0-config.xml
二、连接操作
1.DriverManager方法;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBConnection {
private static String driverClass = "com.mysql.jdbc.Driver";
private static String url = "jdbc:mysql://localhost:3306/test";
private static String username = "root";
private static String password = "123456";
private static Connection conn = null;
static{
try {
//注册驱动
// 不要把conn = DriverManager.getConnection(url, username, password);
//放在这里。防止所有用户都用一个Connection
Class.forName(driverClass);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public static Connection getConnection() throws SQLException{
conn = DriverManager.getConnection(url, username, password);
return conn;
}
}
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBConnection {
private static String driverClass = "com.mysql.jdbc.Driver";
private static String url = "jdbc:mysql://localhost:3306/test";
private static String username = "root";
private static String password = "123456";
private static Connection conn = null;
static{
try {
//注册驱动
// 不要把conn = DriverManager.getConnection(url, username, password);
//放在这里。防止所有用户都用一个Connection
Class.forName(driverClass);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public static Connection getConnection() throws SQLException{
conn = DriverManager.getConnection(url, username, password);
return conn;
}
}
2.使用DataSource子类方法;
资源文件DBConnection.properties
driverClass = com.mysql.jdbc.Driver
url = jdbc:mysql://localhost:3306/test
username = root
password = 123456
模拟数据连接池 DataSourcePool.java
package cn.langzi.jdbc.DataSource;
import java.io.InputStream;
import java.io.PrintWriter;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.Properties;
import javax.sql.DataSource;
import javax.sql.DataSource;
public class DataSourcePool implements DataSource {
private static String url = null;
private static String username = null;
private static String password = null;
private static int size = 10;
private static LinkedList<Connection> list = new LinkedList<Connection>();
static{
try {
InputStream in = DataSourcePool.class.getClassLoader()
.getResourceAsStream(
"cn/langzi/jdbc/DataSource/DBConnection.properties");
Properties prop = new Properties();
prop.load(in);
Class.forName(prop.getProperty("driverClass"));
url = prop.getProperty("url");
username = prop.getProperty("username");
password = prop.getProperty("password");
} catch (Exception e) {
throw new ExceptionInInitializerError(e);
}
}
private static DataSourcePool pool = new DataSourcePool();
//创建对象就初始化size个数据库连接
private DataSourcePool(){
for(int i=0;i<size;i++){
try {
Connection conn = DriverManager.getConnection(url, username, password);
System.out.println(conn);
list.add(conn);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static DataSourcePool getInstance(){
return pool;
}
@Override
public Connection getConnection() throws SQLException {
if(list.size()>0){
//取到连接,即从list中弹出一个Connection 连接
final Connection conn = list.pop();
//动态代理,返回一个代理对象
return (Connection) Proxy.newProxyInstance(DataSourcePool.class.getClassLoade(), conn.getClass().getInterfaces(), new InvocationHandler(){
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
//如果Connection调用的是close方法就将连接返回给数据连接池
if(method.getName().equals("close")){
list.push(conn);
return null;
}
return method.invoke(conn, args);
}
});
}
//连接用完
throw new RuntimeException("对不起,服务器繁忙!!!");
}
@Override
public Connection getConnection(String username, String password)
throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public PrintWriter getLogWriter() throws SQLException {
// TODO Auto-generated method stub
return null;
}
@Override
public int getLoginTimeout() throws SQLException {
// TODO Auto-generated method stub
return 0;
}
@Override
public void setLogWriter(PrintWriter out) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public void setLoginTimeout(int seconds) throws SQLException {
// TODO Auto-generated method stub
}
@Override
public boolean isWrapperFor(Class<?> iface) throws SQLException {
// TODO Auto-generated method stub
return false;
}
@Override
public <T> T unwrap(Class<T> iface) throws SQLException {
// TODO Auto-generated method stub
return null;
}
}
package cn.langzi.jdbc.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
public class DBConnection {
public static Connection getConnection() throws SQLException{
Connection conn = DataSourcePool.getInstance().getConnection();
return conn;
}
}
DBCP方法:
资源文件:dbcpconfig.properties
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
username=root
password=123456
initialSize=10
maxActive=50
maxIdle=20
minIdle=5
maxWait=60000
连接数据库:
package cn.langzi.jdbc.DBCP;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;
public class DBConnection {
private static DataSource dataSource = null;
static {
try {
//获取资源文件
InputStream in = DBConnection.class.getClassLoader().getResourceAsStream("cn/langzi/jdbc/DBCP/dbcpconfig.properties");
Properties properties = new Properties();
//加载资源文件
properties.load(in);
//建立数据工厂
BasicDataSourceFactory dataSourceFactory = new BasicDataSourceFactory();
dataSource = dataSourceFactory.createDataSource(properties);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static Connection getConnection() throws SQLException{
return dataSource.getConnection();
}
}
c3p0方法:
配置文件:c3p0-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<named-config name="userApp">
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/test</property>
<property name="user">root</property>
<property name="password">123456</property>
<property name="acquireIncrement">5</property>
<property name="initialPoolSize">10</property>
<property name="minPoolSize">10</property>
<property name="maxPoolSize">20</property><!-- intergalactoApp adopts a different approach to configuring statement caching -->
<property name="maxStatements">0</property>
<property name="maxStatementsPerConnection">5</property>
<!-- he's important, but there's only one of him -->
<user-overrides user="master-of-the-universe">
<property name="acquireIncrement">1</property>
<property name="initialPoolSize">1</property>
<property name="minPoolSize">1</property>
<property name="maxPoolSize">5</property>
<property name="maxStatementsPerConnection">50</property>
</user-overrides>
</named-config>
</c3p0-config>
连接数据库:
package cn.langzi.jdbc.c3p0;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class DbConnection {
private static DataSource dataSource;
static{
dataSource = new ComboPooledDataSource("userApp");
}
public static Connection getConnectioon() throws SQLException{
return dataSource.getConnection();
}
}
分享到:
相关推荐
java数据库连接DriverManager
达梦数据库的连接配置 达梦数据库的连接配置是指在 Java 应用程序中连接达梦数据库的过程。该过程主要包括两个方面:JDBC 连接和 iBatis 连接设置。 JDBC 连接 JDBC(Java Database Connectivity)是 Java 应用...
3. 获取数据库连接:使用 DriverManager.getConnection() 方法获取数据库连接。 4. 创建 Statement 对象:使用 Connection 对象创建 Statement 对象。 5. 执行 SQL 语句:使用 Statement 对象执行 SQL 语句。 图书...
数据库连接是指在应用程序和数据库之间建立的一种连接,以便在应用程序中访问和操作数据库中的数据。在 Servlet 中,我们可以使用 JDBC(Java Database Connectivity)来连接数据库。 如何在 Servlet 中连接数据库...
神通数据库oscarJDBC.jar数据库连接驱动,找了很久,javal连接方式 public static Connection con() throws Exception { String DRVIER = "com.oscar.Driver"; String URL = "jdbc:oscar://IP:端口/数据库名称;...
通过本次试验,掌握了如何用JDBC去连接一个数据库,以及数据库的工作原理,还有连接过程中容易出现的异常,掌握了通过ODBC去连接JDBC方法和过程,怎样设置数据源,同时加深了对java程序面向对象编程的理解。
Java 连接数据库 JDBC 步骤详解 Java 连接数据库是 Java 语言中连接数据库的标准规范,通过 JDBC(Java Database Connectivity)接口,可以在 Java 应用程序中访问和操作数据库。下面是 Java 连接数据库的详细步骤...
Java连接数据库并修改内容,Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //加载驱动器 Connection con=DriverManager.getConnection(dbURL,user,password); //获取连接 String sqlStr="select * from ...
描述了在JAVA环境下各访问类的说明.DriverManager接口:该类是...当DriverManager激发getConnection()方法时,DriverManager首先从它已加载的驱动程序池中找到该数据库URL的驱动程序,连接到数据库,于是建立了连接。
JDBC(Java DataBase Connectivity)是一种java数据库连接技术,它对ODBC API进行了面向对象的封装和重新设计。JDBC提供了两种方式连接数据库:ODBC和专用驱动程序。 JDBC 连接数据库 JDBC 连接数据库的主要任务是...
使用 DriverManager 类的 getConnection() 方法可以建立到数据库的连接。这个方法需要三个参数:URL、用户名和密码。 4. 执行 SQL 语句 使用 Connection 对象可以创建 Statement 或 PreparedStatement 对象,以便...
3. 使用 DriverManager.getConnection() 方法连接到 MySql 数据库。 三、实现基本的数据库操作 本文中实现了基本的数据库操作,包括插入、删除、更新、选择等操作。这些操作都可以使用 JDBC API 实现。例如,使用 ...
/* 通过DriverManager的getConnection()方法获取数据库连接 */ conn = DriverManager.getConnection(url, user, password); } catch (Exception ex) { System.out.println("数据库连接出错"); } ...
Java连接数据vertica数据库 就可以连接数据库 import java.sql.*; import java.util.Properties; Properties myProp = new Properties(); //用于设置数据库的用户名 myProp.put("user", "dbadmin"); //用于...
本文将详细介绍如何使用 JSP 连接各种数据库,包括 MySQL、Sql Server 7.0/2000、DB2、Informix、Sybase、PostgreSQL、Oracle 等七种数据库。 一、JSP 连接 MySQL 数据库 连接 MySQL 数据库是最常见的数据库连接...
Java 连接数据库是 Java 语言中最常见的一种操作数据库的方式。它通过 JDBC(Java Database Connectivity,Java 数据库连接)API 实现了对各种数据库的连接和操作。在本文中,我们将详细介绍 Java 连接数据库的基本...
Java语言可以通过多种方式连接SQL Server数据库,其中最常用的两种方法是通过Microsoft的JDBC驱动连接和通过JTDS JDBC Driver连接。 首先,通过Microsoft的JDBC驱动连接SQL Server数据库需要下载三个jar文件:...
SqlHelper.java连接数据库通用类... package org.jdbc.com.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql....
jsp连接数据库代码 testmysql.jsp如下: ;charset=gb2312"%> *"%> <html> <body> ("com.sybase.jdbc.SybDriver").newInstance(); String url =" jdbc:sybase:Tds:localhost:5007/tsdata"; //ts...
* 获得与数据库的连接 * * @param path * @return Connection */ public static Connection getConn(String classDriver, String url, String user, String pwd) { try { Class.forName(class...