1.自定义链接池

首先是最不常用的连接池,但对于新手理解JDBC很友好的

只需要在项目导入java和数据库链接的jar包即可,导入之后:

1.首先定义一个文件夹,格式为XXX.properties

在文件夹里写入连接信息,如:

driver=com.mysql.jdbc.Driver
                            url=jdbc:mysql://localhost:3306/exercise
                            username=root
                            password=***

(exercise是当前数据库名称,剩下的除了账号密码之外都是确定的值)

2.写一个java工具类,存放链接信息(这样以后直接调用这个类,省时省力)

这个类中一点要写一个链接方法,一个释放方法,用以节约资源

import java.sql.*;
import java.util.ResourceBundle;public class DBLink {private static String driver;private static String url ;private static String username;private static String password;static {ResourceBundle bundle = ResourceBundle.getBundle("db");    //Resource 类是读取那个文件的类(这里db是我.properties后缀文件的名字)driver= bundle.getString("driver");url=bundle.getString("url");username=bundle.getString("username");password=bundle.getString("password");}/*** 获得连接信息* @return*/public static Connection getConnection(){Connection conn = null;try {Class.forName(driver);conn = DriverManager.getConnection(url,username,password);} catch (Exception e) {e.printStackTrace();}return conn;}/*** 释放资源* @param conn* @param pstmt* @param rs*/public static void release(Connection conn, PreparedStatement pstmt, ResultSet rs){if(rs!=null) {try {conn.close();} catch (SQLException e) {e.printStackTrace();}}if(pstmt!=null) {try {pstmt.close();} catch (SQLException e) {e.printStackTrace();}}if(conn!=null) {try {conn.close();} catch (SQLException e) {e.printStackTrace();}}}
}

        

2.C3P0连接池

    常用的连接池有C3P0,DBCP等连接池,由于我用C3P0所以对DBCP不做介绍

            首先还是导入c3p0的jar包,导入之后:

   1.需要写一个xml配置文件,模板像这样:

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config><default-config><property name="driverClass">com.mysql.jdbc.Driver</property><property name="jdbcUrl">jdbc:mysql:///exercise</property><property name="user">root</property><property name="password">**</property><property name="initialPoolSize">5</property><property name="maxPoolSize">20</property></default-config><named-config name="MyDB"><property name="driverClass">com.mysql.jdbc.Driver</property><property name="jdbcUrl">jdbc:mysql:///exercise</property><property name="user">root</property><property name="password">**Q</property></named-config></c3p0-config>

解析:后面调用的话可以通过自拟名字(“MyDB”)来调用,如果不加参数的话则通过默认寻找

ComboPooledDataSource dataSource = new ComboPooledDataSource("MyDB");

在编写一个java类,用以连接SQL

import com.mchange.v2.c3p0.ComboPooledDataSource;import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;public class C3P0Utils {private static ComboPooledDataSource dataSource = new ComboPooledDataSource("MyDB");public static DataSource getDataSource(){return dataSource;}public static Connection getConnection(){try {return dataSource.getConnection();} catch (SQLException e) {throw new RuntimeException();}}
}

然后进行测试:

public class MyTest {@Testpublic void Text(){Connection conn = null;PreparedStatement pstmt = null;try{conn = C3P0Utils.getConnection();String sql = "insert into employee values(?,?,?,?,?);";pstmt = conn.prepareStatement(sql);pstmt.setInt(1,1006);pstmt.setString(2,"Zhuge");pstmt.setString(3,"m");pstmt.setString(4,"Social");pstmt.setInt(5,4564);int rows = pstmt.executeUpdate();if(rows>0)System.out.println("succeed");elseSystem.out.println("defeat");}catch (Exception e){e.printStackTrace();}finally {DBLink.release(conn,pstmt,null);}

得到结果,返回成功:

3.DBUtils

     

DBUtils是自己练习是最方便的工具,其好用之处在于不用因为一点点修改而反复重写一个方法。

在使用时首先还是要导包,之后:

1.编写一个数据表类,要把这个类放在domain包下,这是约定。

2.数据表类的具体实现方法是:编写各个字段的信息,设为private来保护;设置一个无参构造方法;每个字段信息添加set和get方法;

3.编写test类:

//QueryRunner是DBUtils的核心

 public void testQueryAllByMap(){try {QueryRunner qr = new QueryRunner((C3P0Utils.getDataSource()));//通过c3p0获取连接String sql = "select * from employee";List<Map<String,Object>> employees = qr.query(sql,new MapListHandler());//核心执行方法for (Map<String,Object> map:employees){System.out.println(map);}} catch (SQLException e) {e.printStackTrace();}}

qr.query()方法有多个重载,第一个参数是sql语句没差,但第二个表示用什么来接受返回值(注意有holder),(现在不是很懂,但要我来想的话有点类似于.net的ref参数)

此例中是用List(Map<>)来接受,这样就可以在程序中使用了

以下是常用的Handler:

JDBC由浅入深解析(C3P0)(DBUtils)相关推荐

  1. JDBC连接池和DBUtils

    本节内容: JDBC连接池 DBUtils 一.JDBC连接池 实际开发中"获得连接"或"释放资源"是非常消耗系统资源的两个过程,为了解决此类性能问题,通常情况 ...

  2. JDBC秒变C3P0连接池——再加连接解耦

    从JDBC连接到C3P0数据库连接池 在Java开发中,使用JDBC操作数据库的四个步骤如下:   ①加载数据库驱动程序(Class.forName("数据库驱动类");)    ...

  3. maven依赖c3p0_java – Maven无法解析C3P0依赖

    我正在尝试使用以下POM文件构建,并且Maven无法解析C3P0依赖项 的pom.xml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instan ...

  4. 【oracle】oracle jdbc驱动与c3p0的一个兼容问题

    环境 oracle 12c 12.1.0.1 oracle jdbc7 12.1.0.1 c3p0 0.9.1.1 tomcat 7.0.55 jdk 1.7 问题 java.lang.Runtime ...

  5. JDBC连接池C3P0,druid

    数据库连接池 什么是数据库连接池: 将多个连接对象放在一个类似于list的集合中,做到需要用到连接的时候就去池子中获取Connection连接对象,不用就放回池子中,不用频繁的获取连接池,关闭连接池. ...

  6. 小汤学编程之JDBC(二)——dbutils框架和DataSource连接池

    一.dbutils框架 1.介绍     2.新增/删除/修改     3.各种查询     4.扩展:Bean中属性名与数据表列名的映射 二.DataSource连接池 1.获取DataSource ...

  7. JDBC连接池c3p0连接异常和日志处理

    1.c3p0连接数据库由于时区没限制报出的错误 代码: package C3P0;import com.mchange.v2.c3p0.ComboPooledDataSource; import co ...

  8. 【JDBC】使用c3p0数据库连接池的各种报错警告

    使用c3p0数据库连接池的各种报错警告 使用c3p0数据库连接池的时候,先导入了三个jar包在lib 文件夹中, c3p0-0.9.5.2.jar mchange-commons-java-0.2.3 ...

  9. 从JDBC到手撸极简版Mybaties(3)JDBC自动解析配置文件

    简介 开门见山的说,java中有一个类叫Properties.该类主要用于读取Java的配置文件,不同的编程语言有自己所支持的配置文件,配置文件中很多变量是经常改变的,为了方便用户的配置,能让用户够脱 ...

最新文章

  1. 深copy 和 浅copy 解析
  2. linux 错误日志 __ratelimit: XXX callbacks suppressed 原因
  3. 相对网站根目录寻址 vs 相对当前目录寻址
  4. Linux常用C函数-接口处理篇(网络通信函数)
  5. 4键电子手表说明书_数字S1系统7寸门口主机操作说明书
  6. python是什么专业学的-自学Python有什么好方法吗?老男孩专业Python培训
  7. 递归与二叉树_leetcode235
  8. 【转】64位win7环境eclipse集成svn后出现Failed to load JavaHL Library的解决办法
  9. cad快捷栏怎么调出来_如何显示CAD的工具栏?CAD如何调出工具栏
  10. 树莓派默认登录账号密码
  11. uart通信协议详解
  12. 如何用cmd打开管理员模式
  13. python-pcl简易文档(不包含自建函数与pcl_grabber包)
  14. 2000亿元贴息贷款,医疗系统上云,解锁医护协同新玩法
  15. 【linux】ubuntu系统硬盘操作:创建删除磁盘分区,更改磁盘分区类型,删除磁盘签名
  16. 概念模型,逻辑模型,物理模型
  17. 程序员一直在寻找的日程安排工具
  18. pytorch并行处理详解(多GPU,环境变量)
  19. android横向瀑布流布局,GitHub - wikison/android_waterfall: Android版的瀑布流布局
  20. PC电脑安装苹果操作系统MAC OS X【图文教程】

热门文章

  1. 新年来到,特此制作一款烟花特效,预祝大家 虎虎生威,虎年大吉,生龙活虎
  2. 使用软路由实现智能Qos
  3. 计算机配置 凭据分配,如何在Windows 10中分配默认凭据提供程序 | MOS86
  4. 测试基础---软件开发生命周期
  5. 从端到云——工业物联网项目全栈快速开发
  6. Delphi7升级到Delphi 2010、Delphi XE、Delphi XE2总结 .
  7. 检测乳腺癌细胞中的有丝分裂(3)
  8. 一文读懂什么是自由城Free City
  9. php【websocket】
  10. 【机器学习】多项式回归案例五:正则惩罚解决过拟合(Ridge回归和Lasso回归)