zoukankan      html  css  js  c++  java
  • c3p0

     在Java开发中,使用JDBC操作数据库的四个步骤如下(可以看上一节内容):

          ①加载数据库驱动程序(Class.forName("数据库驱动类");)
          ②连接数据库(Connection con  = DriverManager.getConnection();)
          ③操作数据库(PreparedStatement stat = con.prepareStatement(sql);stat.executeQuery();)
          ④关闭数据库,释放连接(con.close();)
    这里提出了连接池的概念帮我们简化了步骤
    连接池是一直保持连接的建立,有执行就执行操作。相当于只执行上面的第三步
    数据库连接池负责分配,管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是重新建立一个。
    最小连接数:是连接池一直保持的数据库连接,所以如果应用程序对数据库连接的使用量不大,将会有大量的数据库连接资源被浪费.
    最大连接数:是连接池能申请的最大连接数,如果数据库连接请求超过次数,后面的数据库连接请求将被加入到等待队列中,这会影响以后的数据库操作

    c3p0就是连接池的一种实现帮我们简化了步骤,c3p0有两种配置方法,
    这里只讲简单的通过xml文件配置,将这个文件放到项目的src下--我一般放置在maven项目的resources下
    <?xml version="1.0" encoding="UTF-8"?>
    <c3p0-config>
    <!-- 默认配置,只可以出现一次 -->
        <default-config>
            <!-- 配置JDBC 四个基本属性 -->
            <property name="driverClass">com.mysql.cj.jdbc.Driver</property>
            <property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/goods?characterEncoding=utf8&amp;useSSL=false
            </property>
            <property name="user">zhangsan</property>
            <property name="password">123123</property>
            <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
            <property name="acquireIncrement">3</property>
            <!-- 初始化数据库连接池时连接的数量 -->
            <property name="initialPoolSize">5</property>
            <!-- 数据库连接池中的最小的数据库连接数 -->
            <property name="minPoolSize">2</property>
            <!-- 数据库连接池中的最大的数据库连接数 -->
            <property name="maxPoolSize">10</property>
        </default-config>
        
        <named-config name="mysql">
            <!-- 配置JDBC 四个基本属性 -->
            <property name="driverClass">com.mysql.cj.jdbc.Driver</property>
            <property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/goods?characterEncoding=utf8&amp;useSSL=false
            </property>
            <property name="user">zhangsan</property>
            <property name="password">123123</property>
            <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
            <property name="acquireIncrement">3</property>
            <!-- 初始化数据库连接池时连接的数量 -->
            <property name="initialPoolSize">5</property>
            <!-- 数据库连接池中的最小的数据库连接数 -->
            <property name="minPoolSize">2</property>
            <!-- 数据库连接池中的最大的数据库连接数 -->
            <property name="maxPoolSize">10</property>
        </named-config>
        
    </c3p0-config>

    java代码如下---需要导入c3p0包

    package db;
    import com.mchange.v2.c3p0.ComboPooledDataSource;
    import java.sql.*;
    public class TestC3p0 {
        public static void main(String[] args) {
            ComboPooledDataSource ds=new ComboPooledDataSource();
            Connection conn=null;
            Statement statement=null;
            try {
                conn =ds.getConnection();
                String sql ="select * from t_user_test";
                statement =conn.createStatement();
                ResultSet set =statement.executeQuery(sql);
                ResultSetMetaData data=set.getMetaData();
                System.out.println(data.getColumnCount()); //一共有多少列
                System.out.println(data.getColumnName(1)); //第一列的列名
    
                while (set.next()) {
                    System.out.println(set.getString(1)+" "+set.getString(2)+" "+set.getString(3));
                }
            } catch (Exception e) {
                e.printStackTrace();
            }finally {
                try {
                    if(conn!=null){
                        conn.close();
                        statement.close();
                    }
    
                } catch (SQLException e) {
                    e.printStackTrace();
                }
    
            }
        }
    
    
    
    }
     
  • 相关阅读:
    老鼠走迷宫
    堆栈的应用 问题还未解决
    计数排序与基数排序
    C++类的描述
    选择排序 冒泡排序 插入排序
    计算名次
    多项式求值 n维多项式 Horner解法
    003_sublime如何实时预览markdown
    002_git下载的源码怎么打成jar包呢?
    001_idea常用插件
  • 原文地址:https://www.cnblogs.com/ysmdbk/p/11041354.html
Copyright © 2011-2022 走看看