三种连接池连接数据库
2020-03-23 10:19 默默不语 阅读(286) 评论(0) 编辑 收藏 举报package util; import java.beans.PropertyVetoException; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Properties; import javax.sql.DataSource; import org.apache.commons.dbcp2.BasicDataSource; import com.alibaba.druid.pool.DruidDataSource; import com.mchange.v2.c3p0.ComboPooledDataSource; public class DBUtil2 { //key,value都是String类型的map private static Properties p = new Properties(); static { //通过当前线程获取一个类加载器,然后通过这个类加载器加载配置文件到流里面 //默认以src为根路径 InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("jdbc.properties"); //properties通过加载流的方式进行初始化 try { p.load(is); } catch (IOException e) { e.printStackTrace(); } } /** * 获取连接 * @return * @throws PropertyVetoException */ public static Connection getConn() { try { //加载驱动 Class.forName(p.getProperty("jdbc.driver")); } catch (ClassNotFoundException cnfe) { System.out.println("Error loading driver: " + cnfe); } Connection conn = null; try { //数据源是一个名为:DataSource的接口,我们要说的就是这个接口的三种实现方式 /* * 1.c3p0连接池创建数据源的方式 */ // ComboPooledDataSource cpds = new ComboPooledDataSource();//向上造型 // cpds.setDriverClass("oracle.jdbc.OracleDriver"); // cpds.setJdbcUrl("jdbc:oracle:thin:@127.0.0.1:1521:orcl"); // cpds.setUser("scott"); // cpds.setPassword("Oracle11g"); // //cpds.setMaxPoolSize(5); // conn = cpds.getConnection(); /* * 2.dbcp连接池创建数据源的方法 */ // BasicDataSource bds = new BasicDataSource(); // bds.setDriverClassName("oracle.jdbc.OracleDriver"); // bds.setUrl("jdbc:oracle:thin:@127.0.0.1:1521:orcl"); // bds.setUsername("scott"); // bds.setPassword("Oracle11g"); // conn = bds.getConnection(); /* * 3.druid连接池创建数据源的方法 */ DruidDataSource dds = new DruidDataSource(); dds.setDriverClassName("oracle.jdbc.OracleDriver"); dds.setUrl("jdbc:oracle:thin:@127.0.0.1:1521:orcl"); dds.setUsername("scott"); dds.setPassword("Oracle11g"); conn = dds.getConnection(); //DriverManager工具类getConnection静态方法来获取连接Connection(代码已经和数据库建立起了连接) // conn = DriverManager.getConnection(p.getProperty("jdbc.url"), p.getProperty("jdbc.username"), p.getProperty("jdbc.password")); } catch (SQLException e) { e.printStackTrace(); // } catch (PropertyVetoException e) { // e.printStackTrace(); } return conn; } /** * 鍏抽棴杩炴帴 */ public static void closeConn(Connection conn) { if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
2019-03-23 《信息技术手册查重错误比对分析》开发记录5