Druid数据库连接池

一、Druid连接池的创建

package cn.zhouzhou;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Properties;

import javax.sql.DataSource;

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import com.mchange.v2.c3p0.ComboPooledDataSource;

/*
 *一、Druid连接池?
 *         和之前的c3p0一样,连接池。
 *         阿里的产品。
 * 
 *二、怎么用?
 *
 *         1.导包
 *             将【druid-1.0.9 jar】导入到lib目录中。
 * 
 *         2.定义配置文件 .properties 仅此一种格式。 
 *             1.【druid.properties】可以放在任意位置。------------------------->里面的数据库  修改成自己要用的!
 *             
       3.加载文件?  * Properties pro01=new Properties(); * InputStream in01=Druid连接池.class.getClassLoader().getResourceAsStream("druid.properties"); * pro01.load(in01); * * 4.获得连接池对象 * DataSource da01=DruidDataSourceFactory.createDataSource(pro01); * * 5.获取连接 * Connection con01=da01.getConnection(); *
*/ public class Druid连接池 { public static void main(String[] args) throws Exception { Properties pro01=new Properties();//1.加载文件 InputStream in01=Druid连接池.class.getClassLoader().getResourceAsStream("druid.properties");//2.通过流的方式获取文件 pro01.load(in01); DataSource da01=DruidDataSourceFactory.createDataSource(pro01);//3.连接池对象 Connection con01=da01.getConnection();//4.获取连接 System.out.println(con01);//4.打印地址,验证是否连接成功 String sql01="select * from shop"; PreparedStatement pr01=con01.prepareStatement(sql01); ResultSet rs01=pr01.executeQuery(); while (rs01.next()) { System.out.println(rs01.getInt(1)+" "+rs01.getString(2)); } in01.close(); //关闭流 } }

二、改良版Druid连接池

  我们发现  在加载文件的时候太复杂,能否将其封装成一个工具类,方便使用。

package JdbcUtils;

import java.io.IOException;
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 com.alibaba.druid.pool.DruidDataSourceFactory;


/*
 * 封装一个Druid的工具类 Jdbc
 * 
 */
public class Jdbc {
    
    private static DataSource ds;    //1.定义成员变量 DataSource
    
    
    static{        
        try
        {    //2.加载配置文件 获得连接池
            Properties pro01=new Properties();
            pro01.load(Jdbc.class.getClassLoader().getResourceAsStream("druid.properties"));
            ds=DruidDataSourceFactory.createDataSource(pro01);
        } catch (Exception e) {
            e.printStackTrace();
        }
        
    }
    
    public static Connection getConnection() throws SQLException{    //获得连接
        return ds.getConnection();
    }
    
    public static void  close(Statement start,Connection con) {    //释放资源
        if (start!=null) {
            try {
                start.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (con!=null) {
            try {
                con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        
    }
    public static void  close(ResultSet rs,Statement start,Connection con) {    //重载  继续释放资源。
        if (rs!=null) {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (start!=null) {
            try {
                start.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (con!=null) {
            try {
                con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        
    }
    

}

三、测试Jdbc 封装类。

package cn.zhouzhou;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import JdbcUtils.Jdbc;

/*
 * 测试我们写的封装 jdbc工具类
 * 
 */
public class Text01 {
    public static void main(String[] args) {
        Connection con01=null;
        PreparedStatement ps=null;
        try {
            
             con01=Jdbc.getConnection();//获得连接
             
             String sql01="insert into shop values(999,?,?,'刚把对!')";//定义SQL语句 占位子节符    在shop中 添加一条数据
            
             ps=con01.prepareStatement(sql01); //获得接口 执行平台
            
             ps.setString(1, "haha"); //设置键值对
             ps.setDouble(2, 66666);
             
             int i=ps.executeUpdate();//执行SQL语句
             System.out.println(i);
             
        } catch (SQLException e)
        {
            e.printStackTrace();
        }finally{
            Jdbc.close(ps, con01);
        }
        
    }

}
原文地址:https://www.cnblogs.com/ZXF6/p/10651597.html