Druid数据库连接池
Posted zxf6
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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); } } }
以上是关于Druid数据库连接池的主要内容,如果未能解决你的问题,请参考以下文章