- 浏览: 49031 次
- 性别:
- 来自: 深圳
文章分类
最新评论
一、环境
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;
}
}
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
神通数据库oscarJDBC.jar数据库连接驱动,找了很久,javal连接方式 public static Connection con() throws Exception { String DRVIER = "com.oscar.Driver"; String URL = "jdbc:oscar://IP:端口/数据库名称;...
通过本次试验,掌握了如何用JDBC去连接一个数据库,以及数据库的工作原理,还有连接过程中容易出现的异常,掌握了通过ODBC去连接JDBC方法和过程,怎样设置数据源,同时加深了对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的驱动程序,连接到数据库,于是建立了连接。
/* 通过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"); //用于...
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...
c3p0 是一个易于使用的库,用于使用 JNDI 可绑定数据源(包括实现连接和语句池的数据源)扩充传统(基于 DriverManager)的 JDBC 驱动程序,如 jdbc3 规范和 jdbc2 std 扩展所述。
c3p0 是一个易于使用的库,用于使用 JNDI 可绑定数据源(包括实现连接和语句池的数据源)扩充传统(基于 DriverManager)的 JDBC 驱动程序,如 jdbc3 规范和 jdbc2 std 扩展所述。
c3p0 是一个易于使用的库,用于使用 JNDI 可绑定数据源(包括实现连接和语句池的数据源)扩充传统(基于 DriverManager)的 JDBC 驱动程序,如 jdbc3 规范和 jdbc2 std 扩展所述。
本文实例讲述了jsp+jdbc实现连接数据库的方法。分享给大家供大家参考。具体如下: 初次尝试JSP+jdbc,按照书上的例子折腾了半天,就是连不上数据库。于是在网上找材料,终于发现,老的jar包与新版数据库直接不兼容。...
Java连接数据库和断开数据库讲解 代码,研究JDBC连接SQLServer数据库,很简单但很实用的例子,从建立驱动连接到打开数据库的过程,欢迎学习参考。主要代码如下: Class.forName(...
Connection con=java.sql.DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=books","sa",""); Statement stmt=con.createStatement(); ResultSet rst=stmt.executeQuery(...
o(2)通过DriverManager获取数据库连接 o(3)通过Connection对象获取Statement对象 o(4)使用Statement接口执行SQL语句 o(5)操作ResultSet结果集 o(6)关闭连接,释放资源 2.下面进行代码演示 1.注册数据库...
Jdbc连接各种数据库代码方法大全 1、Oracle8/8i/9i数据库(thin模式) Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); String url="jdbc:oracle:thin:@localhost:1521:orcl"; //orcl为...
DBConnectionManager.java //连接数据库用的 import java.sql.*; public class DBConnectionManager { private String driverName="com.microsoft.jdbc.sqlserver.SQLServerDriver"; private String url="jdbc:...
MySQL: ... //驱动程序 String URL="jdbc:mysql://localhost:3306/db_name"; //连接的URL,db_name为数据库名 String Username="username";... String Password="password";... //连接SQL数据库的方法