• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > C3P0连接池的详细介绍

C3P0连接池的详细介绍

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了DBUtils,JDBC,连接等相关知识,希望本文的分享对您有所帮助
C3P0连接池

创建C3P0连接池的工具类
* 连接的规范接口:
* javax.sql.DataSource接口
* 接口的实现类对象
* ComboPooledDataSource
* 成员位置创建ComboPooledDataSource对象
* 使用静态代码块给ComboPooledDataSource设置4大数据量连接信息
* 创建一个静态方法返回Connection对象
* 创建一个静态方法释放资源

1 /* 2 * 创建DBCP连接池工具类 3 * 使用读取配置文件的方式 4 * DBCP中有一个工厂类BasicDataSourceFactory 5 * 工厂类中有一个静态方法 6 * static DataSource createDataSource(Properties prop) 7 * 此方法返回的就是DataSource接口的实现类对象BasicDataSource 8 * 9 * 创建Propertis集合+IO技术读取配置文件10 * 把配置文件传入BasicDataSourceFactory静态方法createDataSource中11 */12 public class DBCPUtilsReadConfig {13 //创建DataSource变量14 private static DataSource dataSource;15 16 static{17 try {18 //创建Propertis集合+IO技术读取配置文件19 //使用类加载器,扫描包下的文件20 InputStream is = DBCPUtilsReadConfig.class.getClassLoader()21 .getResourceAsStream("dbcpconfig.properties");22 //创建Propertis集合23 Properties prop = new Properties();24 prop.load(is);25 //把配置文件传入BasicDataSourceFactory静态方法createDataSource中26 dataSource = BasicDataSourceFactory.createDataSource(prop);27 } catch (Exception e) {28 throw new RuntimeException("读取配置文件失败");29 }30 }31 32 //创建获取数据库连接对象的方法33 public static Connection getConnection(){34 try {35 return dataSource.getConnection();36 } catch (SQLException e) {37 throw new RuntimeException("获取数据库连接对象失败");38 }39 }40 41 //定义一个释放资源的方法42 public static void close(ResultSet rs,Statement stat,Connection conn){43 if(rs!=null){44 try {45 rs.close();46 } catch (SQLException e) {47 e.printStackTrace();48 }49 }50 if(stat !=null){51 try {52 stat.close();53 } catch (SQLException e) {54 e.printStackTrace();55 }56 }57 if(conn != null){58 try {59 conn.close();60 } catch (SQLException e) {61 e.printStackTrace();62 }63 }64 }65 }


* 使用DBUtils工具类对数据库表进行增删改查
* DBUtils工具类作用:简化JDBC的开发(6步)
*
* DBUtils有3个核心类
* 1.QueryRunner:使用QueryRunner中的方法对数据库进行增删改查
* 2.DbUtils:提供了大量的释放资源的方法
* 3.ResultSetHandler接口:提供了处理查询结果集的方法
*
* QueryRunner类
* 构造方法:
* QueryRunner() 空参数构造方法
* 调用更新和查询方法的时候,需要传入Connection对象
* QueryRunner(DataSource ds) 带DataSource数据库连接池的构造方法
* 调用更新和查询方法的时候QueryRunner会自动从DataSource实现类对象中获取数据库连接对象,使用完毕会自动归还
* 成员方法:
* 执行执行增删改的成员方法
* int update(Connection conn, String sql, Object... params)用来执行增删改的SQL
* int update(String sql, Object... params) 用来执行增删改的SQL
* 参数:
* Connection conn:数据库连接对象
* String sql:拼接的sql语句,可以使用?占位符
* Object... params:?占位符的实际参数,可以使用Object[]
* 返回值:
* int:执行的有效行数
* 执行执行查询的成员方法
* <T> T query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params)
* <T> T query(String sql, ResultSetHandler<T> rsh, Object... params)
* 参数:
* Connection conn:数据库连接对象
* String sql:拼接的sql语句,可以使用?占位符
* Object... params:?占位符的实际参数,可以使用Object[]
* ResultSetHandler<T> rsh:用来存储查询之后的结果集,可以传入ResultSetHandler9种实现类对象
* 返回值:
* <T> T:传入的ResultSetHandler实现类不同,返回的结果集也不同,使用泛型,传入什么结果集,就返回对应的类型

1 /* 2 * 使用QueryRunner对数据库表进行查询 3 * <T> T query(String sql, ResultSetHandler<T> rsh, Object... params) 4 */ 5 public class Demo02DBUtils { 6 //创建QueryRunner对象,构造方法中传入数据库连接池的实现类 7 QueryRunner qr = new QueryRunner(C3P0UtilsReadXML.getDataSource()); 8 9 /* 10 * 第九种查询方式:使用KeyedHandler(Map嵌套Map) 11 * KeyedHandler会把结果集的每一行数据封装到Map集合中 12 * key:字符串类型列名 13 * value:列名对应的值(不同的列,数据类型不同,value使用Object类型) 14 * 多个Map集合存储到另外一个Map集合中 15 * key:指定的字符串列名,不指定则默认使用第一列 16 * value:传入存储每行数据的Map集合 17 * 18 * 构造方法: 19 * KeyedHandler() 不指定列名 20 * KeyedHandler(int columnIndex) 指定列号1,2,3,4 21 * KeyedHandler(String columnName) 指定字符串格式列名 22 */ 23 @Test 24 public void keyedHandler(){ 25 try { 26 //拼接sql语句 27 String sql = "SELECT * FROM category"; 28 //调用QueryRunner中的query方法,结果集使用KeyedHandler 29 //Map<Object,Map<String,Object>> mapmap = qr.query(sql, new KeyedHandler("cid")); 30 Map<Object,Map<String,Object>> mapmap = qr.query(sql, new KeyedHandler("cname")); 31 //遍历Map集合取出存储每一行数据的Map集合 32 for (Object obj: mapmap.keySet()) { 33 //根据key取出值存储每一行数据的Map集合 34 Map<String,Object> map = mapmap.get(obj); 35 //遍历Map集合 36 for(String key : map.keySet()){ 37 System.out.print(obj+":"+key+"..."+map.get(key)+"\t"); 38 } 39 //打印完每一行数据之后换行 40 System.out.println(); 41 } 42 } catch (Exception e) { 43 System.out.println(e); 44 } 45 } 46 47 /* 48 * 第八种查询方式:使用ScalarHandler(重点) 49 * ScalarHandler用于执行返回单个数据的sql语句 50 * 使用聚合函数查询的结果都是单个数据 51 * 或者查询某一行的某一个字段 52 */ 53 @Test 54 public void scalarHandler(){ 55 try { 56 //拼接sql语句 57 String sql = "SELECT SUM(cid) FROM category"; 58 sql = "SELECT cname FROM category WHERE cid=?"; 59 //调用QueryRunner中的query方法,结果集使用ScalarHander 60 //返回的值的数据类型不确定,使用Object类型 61 Object obj = qr.query(sql, new ScalarHandler(),2); 62 System.out.println(obj); 63 } catch (Exception e) { 64 System.out.println(e); 65 } 66 } 67 68 /* 69 * 第七种查询方式:使用MapListHandler 70 * 1.MapListHandler会把多条数据,存储到多个Map集合中 71 * key:字符串类型列名 72 * value:列名对应的值(不同的列,数据类型不同,value使用Object类型) 73 * 2.会把多个Map集合存储List集合中 74 */ 75 @Test 76 public void mapListHandler(){ 77 try { 78 //拼接查询sql语句 79 String sql = "SELECT * FROM category"; 80 //调用QueryRunner中的query方法执行查询sql语句,结果集传入MapListHandler 81 List<Map<String,Object>> list = qr.query(sql, new MapListHandler()); 82 //遍历List集合,取出Map集合 83 for (Map<String, Object> map : list) { 84 //遍历Map集合 85 for(String key: map.keySet()){ 86 System.out.print(key+"..."+map.get(key)+"\t"); 87 } 88 System.out.println();/
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C3P0连接池的详细介绍

相关文章

  • 2018-12-05解决MySQL数据库中文模糊检索问题的方法
  • 2017-05-11MySQL索引使用全程分析
  • 2017-05-11Mysql InnoDB删除数据后释放磁盘空间的方法
  • 2018-12-05MySQL索引不生效的解决办法
  • 2018-12-05Mysql建立索引 提高系统的运行速度
  • 2018-12-05SQL 多表连接查询实现语句
  • 2018-12-05Oracle入侵常用操作命令整理
  • 2018-12-05影响MySQL性能的五大配置参数
  • 2018-12-05深入理解MySQL进阶漂流记(一)
  • 2017-05-11mysql支持跨表delete删除多表记录

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • MySQL 基础知识小结
    • 浅谈MySql的存储引擎(表类型)
    • 关于MySQL引擎特性以及InnoDB崩溃恢复详解
    • Oracle数据库性能优化技术开发者网络Oracle
    • 关于如何提高效率和安全性等方面总结分享
    • MySQL 关于表复制 insert into 语法的详细介绍
    • mysql innodb的监控(系统层,数据库层)的实例代码详解
    • 理解redo(11)truncate和select的redo
    • 讨论有关MySQL备份字符集
    • mysql 协议的process kill包及解析

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有