方法1:使用java.sql.DriverManager类

驱动管理器类,用于管理所有注册的驱动程序。

(注:DataSource 接口是 JDBC 2.0 API 中的新增内容,它提供了连接到数据源的另一种方法。使用 DataSource 对象是连接到数据源的首选方法。)

常用的两个API

registerDriver(driver)  : 注册驱动类对象

ConnectiongetConnection(url,user,password);  获取连接对象

@Test

public void test1(){

Statement stmt = null;

Connection conn = null;

try {

//1.驱动注册程序 --内部执行了RegisterDriver

Class.forName("com.mysql.jdbc.Driver");

//2.获取连接对象

conn = DriverManager.getConnection(url, user, password);

//3.创建Statement

stmt = conn.createStatement();

//4.准备sql

String sql = "CREATE TABLE student(id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(20),gender VARCHAR(2))";

//5.发送sql语句,执行sql语句,得到返回结果

int count = stmt.executeUpdate(sql);

//6.输出

System.out.println("影响了"+count+"行!");

} catch (Exception e) {

e.printStackTrace();

throw new RuntimeException(e);

} finally{

//7.关闭连接(顺序:后打开的先关闭)

if(stmt!=null)

try {

stmt.close();

} catch (SQLException e) {

e.printStackTrace();

throw new RuntimeException(e);

}

if(conn!=null)

try {

conn.close();

} catch (SQLException e) {

e.printStackTrace();

throw new RuntimeException(e);

}

}

}

方法2:使用实现了javax.sql.DataSource接口的子类

javax.sql.DataSource接口

包名:javax.sql

接口名: DataSource

作为 DriverManager 工具的替代项,DataSource 对象是获取连接的首选方法。DataSource接口由驱动程序供应商实现。共有三种类型的实现:

1. 基本实现 - 生成标准的 Connection 对象

2. 连接池实现 - 生成自动参与连接池的 Connection 对象。此实现与中间层连接池管理器一起使用。

3. 分布式事务实现 - 生成一个 Connection 对象,该对象可用于分布式事务,大多数情况下总是参与连接池。此实现与中间层事务管理器一起使用,大多数情况下总是与连接池管理器一起使用。

自己实现DataSource子类这种方法不常用,常用的方法可以参考方法3和方法4

插入一句:Sun公司约定:如果是连接池技术,都需要实现javax.sql.DataSource接口

方法3:DBCP连接池

DBCP 是 Apache 软件基金组织下的开源连接池实现,使用DBCP数据源,应用程序应在系统中增加如下两个 jar 文件:

Commons-dbcp.jar:连接池的实现

Commons-pool.jar:连接池实现的依赖库

Tomcat 的连接池正是采用该连接池来实现的。该数据库连接池既可以与应用服务器整合使用,也可由应用程序独立使用。

核心类:BasicDataSource

包名:org.apache.commons.dbcp

类名:ClassBasicDataSource extends Object implements DataSource

Basicimplementation of javax.sql.DataSource that is configured via

JavaBeansproperties. This is not the only way to combine the

commons-dbcp andcommons-pool packages, but provides a "one stop

shopping" solutionfor basic requirements.

2. 两种方式实现连接池

1)硬编码方式

2)配置方式

public class App_DBCP {

// 1. 硬编码方式实现连接池

@Test

public void testDbcp() throws Exception {

// DBCP连接池核心类

BasicDataSource dataSouce = new BasicDataSource();

// 连接池参数配置:初始化连接数、最大连接数 / 连接字符串、驱动、用户、密码

dataSouce.setUrl("jdbc:mysql:///jdbc_demo");//数据库连接字符串

dataSouce.setDriverClassName("com.mysql.jdbc.Driver"); //数据库驱动

dataSouce.setUsername("root");//数据库连接用户

dataSouce.setPassword("root"); //数据库连接密码

dataSouce.setInitialSize(3); // 初始化连接

dataSouce.setMaxActive(6); // 最大连接

// 获取连接

Connection con = dataSouce.getConnection();

con.prepareStatement("delete from admin where id=3").executeUpdate();

// 关闭

con.close();

}

@Test

// 2. 【推荐】配置方式实现连接池, 便于维护

public void testProp() throws Exception {

// 加载prop配置文件

Properties prop = new Properties();

// 获取文件流

InputStream inStream = App_DBCP.class.getResourceAsStream("db.properties");

// 加载属性配置文件

prop.load(inStream);

// 根据prop配置,直接创建数据源对象

DataSource dataSouce = BasicDataSourceFactory.createDataSource(prop);

// 获取连接

Connection con = dataSouce.getConnection();

con.prepareStatement("delete from admin where id=4").executeUpdate();

// 关闭

con.close();

}

}

配置方式实现DBCP连接池,  配置文件中的key与BaseDataSouce中的属性一样:

db.properties

url=jdbc:mysql:///jdbc_demo

driverClassName=com.mysql.jdbc.Driver

username=root

password=root

initialSize=3

maxActive=6

方法4:C3P0连接池

C3P0连接池:

最常用的连接池技术!Spring框架,默认支持C3P0连接池技术!

C3P0连接池,核心类:

CombopooledDataSource ds;

包名:com.mchange.v2.c3p0

类名:ClassComboPooledDataSource  implementsPooledDataSource implements DataSource

使用:

1.      下载,引入jar文件:  c3p0-0.9.1.2.jar

2.      使用连接池,创建连接

a)        硬编码方式

b)        配置方式(xml)

自动加载src下c3p0的配置文件【c3p0-config.xml】

public class App {

@Test

//1. 硬编码方式,使用C3P0连接池管理连接

public void testCode() throws Exception {

// 创建连接池核心工具类

ComboPooledDataSource dataSource = new ComboPooledDataSource();

// 设置连接参数:url、驱动、用户密码、初始连接数、最大连接数

dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/jdbc_demo");

dataSource.setDriverClass("com.mysql.jdbc.Driver");

dataSource.setUser("root");

dataSource.setPassword("root");

dataSource.setInitialPoolSize(3);

dataSource.setMaxPoolSize(6);

dataSource.setMaxIdleTime(1000);

// ---> 从连接池对象中,获取连接对象

Connection con = dataSource.getConnection();

// 执行更新

con.prepareStatement("delete from admin where id=7").executeUpdate();

// 关闭

con.close();

}

@Test

//2. XML配置方式,使用C3P0连接池管理连接

public void testXML() throws Exception {

// 创建c3p0连接池核心工具类

// 自动加载src下c3p0的配置文件【c3p0-config.xml】

ComboPooledDataSource dataSource = new ComboPooledDataSource();// 使用默认的配置

// 获取连接

Connection con = dataSource.getConnection();

// 执行更新

con.prepareStatement("delete from admin where id=5").executeUpdate();

// 关闭

con.close();

}

}

总结:

DataSource 接口是 JDBC 2.0 API 中的新增内容,它提供了连接到数据源的另一种方法。使用 DataSource 对象是连接到数据源的首选方法。

DataSource比DriverManager好在哪里呢?

1. DataSource创建的connection既有基本实现,也有连接池实现(可以复用,DataSource帮我们实现了复用机制),而DriverManager创建的connection则不能复用(当然自己写连接池,自己来实现复用机制也是可以的,可以参考:使用动态代理实现自定义连接池)。所以sun公司规定连接池技术需要实现DataSource接口。

2. DataSource中封装了DriverManager的使用,使用DataSource的一个好处是可以在外边配置(如C3P0直接修改xml文件,不用自己写配置文件db.properties)。

3. 配置DataSource,由容器来获取Connection并结合连接池的应用比直接使用DriverManager操作JDBC效率高一些(参考:DBCP vs DriverManage效率)。

jdbc连接数据scanip_JDBC连接数据库的四种方式:DriverManager,DataSource,DBCP,C3P0相关推荐

  1. JDBC 连接数据库的四种方式

    JDBC 连接数据库的四种方式 每博一文案 师傅说,人这一辈子总有许多遗憾,许多无可奈何. 其实有些事情不用太过执着,放下牵绊你的生活无畏执念,你会收获一个更为广阔的天地. 想开,看开,放开这六个字, ...

  2. 【JDBC篇】Java连接数据库的五种方式,及什么是URL?

    目录 URL介绍: 连接数据库的五种方式 方式一: 方式二: 方式三: 方式四: 方式五:(最终版) URL介绍: JDBC URL 用于标识一个被注册的驱动程序,驱动程序管理器通过这个 URL 选择 ...

  3. IOS数据本地存储的四种方式--

    注:借鉴于:http://blog.csdn.net/jianjianyuer/article/details/8556024 在IOS开发过程中,不管是做什么应用,都会碰到数据保存问题.将数据保存到 ...

  4. jdbc Template 介绍和 spring 链接数据源的四种方式

    为什么具体讲template介绍和spring jdbc链接数据源的几种方式放在一起介绍,在于你在使用template的时候,具体配置数据源,或者在链接配置数据源的时候要是使用template,就在在 ...

  5. 解决存储过程中数据安全问题的四种方式

    随着科技的不断发展,数据量也正在呈指数倍的增加.在这样一个大背景下,存储产品成为了时下市场中最热的产品.而数据的安全性也变得尤为重要.后端存储已经逐渐成为企业业务系统的核心和关键. 一般而言,我们有四 ...

  6. linux下实现web数据同步的四种方式(性能比较)

    实现web数据同步的四种方式 ======================================= 1.nfs实现web数据共享 2.rsync +inotify实现web数据同步 3.rs ...

  7. java解析与生成json数据的四种方式,比如将json字符串转为json对象或json对象转为json字符串

    文章目录 1. 详说json 1.1 何为json 1.2 json语法 2. Java解析与生成JSON的四种方式 2.1 传统方式 2.2 利用Jackson方式 2.3 利用Gson方式 2.4 ...

  8. 实现web数据同步的四种方式

    实现web数据同步的四种方式 ======================================= 1.nfs实现web数据共享 2.rsync +inotify实现web数据同步 3.rs ...

  9. 传感器信号 如何发送到服务器,传感器采集到的数据通过无线传输至监控服务器的四种方式...

    传感器采集到的数据通过无线传输至监控服务器的四种方式 [复制链接] 目前,工业物联网传感器数据采集无线传输至监控服务器比较常用的通讯解决方案主要有GPRS/4G,433MHz和2.4GHz等三种,而以 ...

最新文章

  1. js async await 终极异步解决方案
  2. 置信学习:让样本中的“脏数据“原形毕露
  3. Eigen入门之密集矩阵 3 - Array操作
  4. 【Vue 3.0 新特性(一)】源码的组织方式
  5. THINKPHP中使用swoole
  6. mysql删除员工_MySQL误删数据救命指南:开发人员必收藏
  7. api-gateway实践(01)服务网关 - 原型功能
  8. 缓存算法及Redis、Memcached、Guava、Ehcache中的算法
  9. java ajax框架_ajax框架之 zk -demo1
  10. 564. 寻找最近的回文数
  11. Hadoop和大数据:60款顶级大数据开源工具
  12. CSDN文章如何设置【分级标题】和【目录】
  13. Linux7系统克隆到另一个硬盘,Ubuntu14.04 dd命令克隆系统镜像安装到另一台机器上...
  14. [置顶]定向爬虫 - Python模拟新浪微博登录
  15. loadstring的用法
  16. java基于Springboot+vue的球鞋销售商城网站 elementui
  17. 【Spring注解驱动开发】使用@Autowired@Qualifier@Primary三大注解自动装配组件,你会了吗?
  18. 服务机器人 开源_让机器为我们服务而不是我们为他们服务
  19. 分组密码设计准则概论
  20. 阅读摘抄——把时间当做朋友

热门文章

  1. mysql root命令_MySQL 修改 root 密码命令
  2. cbrt c语音_C语言有哪些鲜为人知的特性?
  3. 用c语言编译二叉树,C语言 数据结构平衡二叉树实例详解
  4. 36套java精品高级课_Dubbo-ZooKeeper“走一波”
  5. c语言中词法分析怎么识别注释,C语言中的词法分析-如何在检测多行注释时使星号被读取并输出?...
  6. centos6.5 mysql主从_CentosMysql主从备份
  7. 重载函数编译后的新名字
  8. postgresql定义访问ip与用户_Postgresql-12.1最新版本在线安装以及配置使用全流程
  9. python 解方程 sympy_用Python和Sympy求解方程并得到数值答案
  10. Java语言矩形与立方体的继承,沈阳师范大学大一下册C++语言PTA题目集以及答案(编程题篇)...