druid连接池:
是阿里的连接池,druid的稳定性及效率都很高,目前用的比较广,所以建议开发过程中尽量用druid连接池(支持国产最重要)
druid连接池也需要配置文件,配置文件必须是properites文件,文件名称随意,文件位置也随意通过Properties类来读文件,需要配置工具类来操作连接池;
配置文件:这里文件名称 druid.properties ,放在src文件夹下方便是用类的加载器读文件,配置文件内容:
driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql://127.0.0.1:3306/qy97 username=root password=123456 initialSize=5 maxActive=10 maxWait=3000
durid连接池使用方法:
package com.zs.Druid; import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.pool.DruidDataSourceFactory; import com.alibaba.druid.support.jconsole.DruidSqlDetailFrame; import javax.sql.DataSource; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.util.Properties; public class DruidDemo { public static void main(String[] args) throws Exception { //创建properties对象 Properties p = new Properties(); // 通过类的加最器读配置文件 InputStream in = DuridDemo.class.getClassLoader().getResourceAsStream("druid.properties"); // properties对象加载文件 p.load(in); // 创建连接池对象 通过drudi连接池工厂 创建连接池对象方法 DataSource ds = DruidDataSourceFactory.createDataSource(p); // 获得连接对象 Connection conn = ds.getConnection(); System.out.println(conn); } } /*结果:com.mysql.jdbc.JDBC4Connection@4961f6af * 控制台显示的结果中的红色字体是日志文件,不是报错,之前的C3p0连接池也有日志文件*/
我们发现druid连接池需要读取配置文件,所以我们把它封装成一个工具类,然后通过工具类来调用连接对象:
package JDBCUtils; import com.alibaba.druid.pool.DruidDataSourceFactory; import javax.sql.DataSource; import java.io.InputStream; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Properties; /*Druid连接池工具类*/ public class JDBCUtils { private static DataSource ds; static{ Properties p = new Properties(); InputStream in = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"); try { p.load(in); ds = DruidDataSourceFactory.createDataSource(p); } catch (Exception e) { e.printStackTrace(); } } public static Connection getConnection() throws SQLException { return ds.getConnection(); } public static void close(Connection conn, PreparedStatement pre){ if (pre!=null) { try { pre.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn!=null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } public static void close(Connection conn, PreparedStatement pre, ResultSet rs) { if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if (pre != null) { try { pre.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
测试工具类:
package com.zs.Durid; import JDBCUtils.JDBCUtils; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; public class DruidTest { public static void main(String[] args) { Connection conn=null; PreparedStatement pre=null; try { conn= JDBCUtils.getConnection(); String sql="update login set sname=? where id=?"; pre = conn.prepareStatement(sql); pre.setString(1,"雷欧"); pre.setInt(2,1); pre.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } JDBCUtils.close(conn,pre); } }