zoukankan      html  css  js  c++  java
  • DateResource(数据源)

    为java开发配置mysql的数据源(DateResource)和数据库连接(DBCP,C3P0)

    注:mysql-connector-java-5.1.38-bin.jar(数据库驱动包)

    一、DBCP

    需要导入的jar包

    1、commons-dbcp-1.2.2.jar

    2、commons-pool.jar

    配置数据库连接的.properties配置文件(默认放于src目录下)

     1 #连接设置
     2 driverClassName=com.mysql.jdbc.Driver
     3 url=jdbc:mysql://localhost:3306/mydatabase?useUnicode=true&characterEncoding=utf-8&useSSL=false
     4 username=root
     5 password=root
     6 
     7 #<!-- 初始化连接 -->
     8 initialSize=10
     9 
    10 #最大连接数量
    11 maxActive=50
    12 
    13 #<!-- 最大空闲连接 -->
    14 maxIdle=20
    15 
    16 #<!-- 最小空闲连接 -->
    17 minIdle=5
    18 
    19 #<!-- 超时等待时间以毫秒为单位 6000毫秒/1000等于60秒 -->
    20 maxWait=60000
    21 
    22 
    23 #JDBC驱动建立连接时附带的连接属性属性的格式必须为这样:[属性名=property;] 
    24 #注意:"user" 与 "password" 两个属性会被明确地传递,因此这里不需要包含他们。
    25 connectionProperties=useUnicode=true;characterEncoding=UTF8
    26 
    27 #指定由连接池所创建的连接的自动提交(auto-commit)状态。
    28 defaultAutoCommit=true
    29 
    30 #driver default 指定由连接池所创建的连接的只读(read-only)状态。
    31 #如果没有设置该值,则“setReadOnly”方法将不被调用。(某些驱动并不支持只读模式,如:Informix)
    32 defaultReadOnly=
    33 
    34 #driver default 指定由连接池所创建的连接的事务级别(TransactionIsolation)。
    35 #可用值为下列之一:(详情可见javadoc。)NONE,READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE
    36 defaultTransactionIsolation=READ_UNCOMMITTED

    编写工具类JDBCUtil_DBCP.java

    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.Properties;
    import javax.sql.DataSource;
    
    import org.apache.commons.dbcp.BasicDataSourceFactory;
    
    public class JDBCUtil_DBCP {
        private static DataSource dataSource;
        static {
            //读取properties配置文件需要new一个Properties对象
            Properties properties = new Properties();
            //将配置文件读取到输入流
            InputStream in =Class.class.getResourceAsStream("/mysqldbcpconfig.properties");
            try {
                properties.load(in);
                //读取配置创建数据源datasource
                dataSource = BasicDataSourceFactory.createDataSource(properties);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        //提供获取datasource方法
        public static DataSource getDataSource() {
            return dataSource;
        }
        //直接获取连接
        public static Connection getConnection(){
            try {
                return dataSource.getConnection();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            return null;
        }
        //关闭各种连接和资源
        public static void closeConnection(Connection connection, Statement st, ResultSet rt){
            if(connection != null){
                try {
                    connection.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(st != null){
                try {
                    st.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(rt != null){
                try {
                    rt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    
    }

    二、C3P0

    需要导入的jar包

    1、c3p0-0.9.2-pre1.jar

    2、c3p0-oracle-thin-extras-0.9.2-pre1.jar

    3、mchange-commons-0.2.jar

    配置c3p0-config.xml(一定要放在src目录下,默认读取位置)

    <?xml version="1.0" encoding="UTF-8"?>
    
    
    <c3p0-config>
        <default-config>
            <property name="driverClass">com.mysql.jdbc.Driver</property>
            <property name="jdbcUrl">jdbc:mysql://localhost:3306/mydatabase?useSSL=false</property>
            <property name="user">root</property>
            <property name="password">root</property>
            
            <property name="acquireIncrement">5</property>
            <property name="initialPoolSize">10</property>
            <property name="minPoolSize">5</property>
            <property name="maxPoolSize">20</property>
            
            
        </default-config>
    </c3p0-config>
    jdbc:mysql://localhost:3306/mydatabase?useSSL=false
    jdbc:mysql://localhost:3306/数据库名 useSSL=false
    你的JDBC版本与MySQL版本不兼容,MySQL的版本更高一些,在连接语句后加上“useSSL=‘true’” ,就可以连接到数据库了。

    工具类JDBCUtil_C3P0.java
    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;
    import com.mchange.v2.c3p0.DataSources;
    
    public class JDBCUtil_C3P0 {
        private static ComboPooledDataSource dataSource;
        
        static {
            /*方法一:DataSources.unpooledDataSource()
             * try {
                DataSources dataSource = DataSources.unpooledDataSource();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            */
            /*
             * 方法二:ComboPooledDataSource()
             * */
            dataSource = new ComboPooledDataSource();
        }
        public static DataSource getDataSource(){
            return dataSource;
        }
        public static Connection getConnection(){
            try {
                return dataSource.getConnection();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            return null;
        }
        public static void closeConnection(Connection connection, Statement st, ResultSet rt){
            if(connection != null){
                try {
                    connection.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(st != null){
                try {
                    st.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(rt != null){
                try {
                    rt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    C3P0获取DataResouce不能传配置文件路径因此xml应放默认位置,或许有其它获取数据源的方法

    Over

  • 相关阅读:
    idea用法
    pagehelper用法
    mybatis
    多线程2
    radio 标签状态改变时 触发事件
    多线程
    a标签点击后,给a标签添加样式
    servlet
    mybatis 查询
    springmvc 发送PUT 和 DELETE 请求
  • 原文地址:https://www.cnblogs.com/hyl-home/p/7358158.html
Copyright © 2011-2022 走看看