一、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);
} } }

最新文章

  1. 【干货分享】流程DEMO-加班与调休
  2. jquery-通过js编写弹出窗口
  3. crontabs Permission denied
  4. leetcode:Power of Two
  5. 使用exe4j把JAVA GUI程序打包成exe文件时遇到的问题
  6. yii2的安装
  7. \n 与 \r 在记事本中的内容表现方式 原创
  8. 扩展欧几里德 POJ 1061
  9. 无良教程-破解SublimeText3
  10. [计算机网络] vsftpd的安装与使用
  11. phper談談最近重構代碼的感受(3)
  12. 【JavaScript OPP基础】---新手必备
  13. 小tips:你不知道的 npm init
  14. 20175324 mycp
  15. layui---十分适用于PC端后台的框架
  16. 关于动画的几种状态表示的含义以及能够使用2d动画表述为什么要使用3d动画表述
  17. IDEA控制台乱码解决
  18. ethereum/EIPs-712 Ethereum typed structured data hashing and signing
  19. SharePoint REST API - 确定REST端点URL
  20. 数据库中增加操作insert into的用法和查询select的用法

热门文章

  1. 13 python初学(函数)
  2. Caused by: java.sql.SQLException: Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp
  3. Python 中的 10 个常见安全漏洞,以及如何避免(上)
  4. Java多线程学习(一)---并发与多线程
  5. A2D Framework - 看如何精简业务逻辑 - 缓存子系统
  6. 使用docker Registry快速搭建私有镜像仓库
  7. Groovy语言学习--语法基础(2)
  8. 反射那点基础-Method
  9. GC调优入门笔记
  10. 【Java并发.6】结构化并发应用程序