Java数据库访问技术归纳

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
/**
 * JDBC
 * Java Data Base Connectivity,
 * java数据库连接
 * 一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问
 * 
 * ojdbc6.jar oracle11g  jdk1.7
 */
public class DB_JDBC {
	private static Properties PRO = new Properties();
	static {
		try {
			PRO.load(DB_JDBC.class.getClassLoader().getResourceAsStream("jdbcconfig.properties"));
			Class.forName(PRO.getProperty("driverclass"));
		} catch (IOException | ClassNotFoundException e) {
			e.printStackTrace();
		}
	}
	
	public static Connection getConn() throws SQLException{
		//return DriverManager.getConnection(PRO.getProperty("url"), PRO.getProperty("user"), PRO.getProperty("password"));
		return DriverManager.getConnection(PRO.getProperty("url"), PRO);
	}
	
	public static void closeConn(Connection conn){
		if(conn !=null){
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
	
	public static void main(String[] args) {
		try {
			Connection conn = DB_JDBC.getConn();
			System.out.println(conn);
			DB_JDBC.closeConn(conn);
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
}
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.commons.dbcp2.BasicDataSourceFactory;
/**
 * DBCP
 * DataBase connection pool
 * 开源数据库连接池
 * 
 * commons-dbcp2-2.4.0.jar for java7
 * commons-dbcp-1.4.jar for java6
 * commons-pool-1.5.4.jar 好像可有无
 */
public class DB_DBCP {
	private static DataSource DS = null;
	static {
		try {
			Properties pro = new Properties();
			pro.load(DB_DBCP.class.getClassLoader().getResourceAsStream("dpcpconfig.properties"));
			DS = BasicDataSourceFactory.createDataSource(pro);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public static Connection getConn() throws SQLException{
		return DS.getConnection();
	}
	
	public static void closeConn(Connection conn){
		if(conn !=null){
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
	
	public static void main(String[] args) {
		try {
			Connection conn = DB_DBCP.getConn();
			System.out.println(conn);
			DB_DBCP.closeConn(conn);
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
}
import java.beans.PropertyVetoException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
import com.mchange.v2.c3p0.ComboPooledDataSource;
/**
 * c3p0
 * JDBC DataSources/Resource Pools
 * 
 * c3p0是一个开源的JDBC连接池,自动读取配置文件。
 * 配置文件名:c3p0-config.xml或者c3p0.properties,放置与src目录下。
 *
 * c3p0-0.9.5.4.jar
 */
public class DB_C3P0 {
	private static ComboPooledDataSource DS = null;
	static {
		//method 1
		DS =new ComboPooledDataSource();
		
		//method 2
		try {
			Properties pro = new Properties();
			pro.load(DB_C3P0.class.getClassLoader().getResourceAsStream("c3p0.properties"));
			DS =new ComboPooledDataSource();
			//DS.setProperties(pro);//only this can not get data
			DS.setDriverClass(pro.getProperty("c3p0.driverClass"));
			DS.setUser(pro.getProperty("c3p0.user"));
			DS.setJdbcUrl(pro.getProperty("c3p0.jdbcUrl"));
			DS.setPassword(pro.getProperty("c3p0.password"));
		} catch (IOException | PropertyVetoException e) {
			e.printStackTrace();
		}
	}
	
	public static Connection getConn() throws SQLException{
		return DS.getConnection();
	}
	
	public static void closeConn(Connection conn){
		if(conn !=null){
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
	
	public static void main(String[] args) {
		try {
			Connection conn = DB_C3P0.getConn();
			System.out.println(conn);
			DB_C3P0.closeConn(conn);
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
}
#jdbcconfig.properties
driverclass=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@host:port:database
user=dbuser
password=dbpassword
#dbcpconfig.properties
driverClassName=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@host:port:database
username=dbuser
password=dbpassword
#初始化连接数 即连接池启动时池子中的连接数目
initialSize=5 
#最大连接数量,即连接池中可同时连接的最大数目   
maxActive=15
#最大空闲连接数,超过此参数时空闲连接将被释放	        
maxIdle=10 
#最小空闲连接  连接池中最少的空闲的连接数,低于这个数量时,意味着连接不够用了,会被创建新的连接           
minIdle=5
#最大等待时间 请求连接时,最长的等待时间 。当没有可用连接时,连接池会等待连接释放,超过该时间限制会抛出异常         
maxWait=30000
#c3p0.properties
#驱动  
c3p0.driverClass=oracle.jdbc.driver.OracleDriver  
#地址  
c3p0.jdbcUrl=jdbc:oracle:thin:@host:port:database
#用户名  
c3p0.user=dbuser  
#密码  
c3p0.password=dbpassword   
#连接池初始化时创建的连接数  
c3p0.initialPoolSize=3  
#连接池保持的最小连接数  
c3p0.minPoolSize=3  
#连接池在无空闲连接可用时一次性创建的新数据库连接数,default:3  
c3p0.acquireIncrement=3  
#连接池中拥有的最大连接数,如果获得新连接时会使连接总数超过这个值则不会再获取新连接,而是等待其他连接释放,所以这个值有可能会设计地很大,default : 15  
c3p0.maxPoolSize=15  
#连接的最大空闲时间,如果超过这个时间,某个数据库连接还没有被使用,则会断开掉这个连接,单位秒  
c3p0.maxIdleTime=100  
#连接池在获得新连接失败时重试的次数,如果小于等于0则无限重试直至连接获得成功  
c3p0.acquireRetryAttempts=30  
#连接池在获得新连接时的间隔时间  
c3p0.acquireRetryDelay=1000   
发布了132 篇原创文章 · 获赞 64 · 访问量 47万+

猜你喜欢

转载自blog.csdn.net/qiuzhi__ke/article/details/103485274