java.sql.DriverManger类简介

 

java的驱动管理类。管理一组 JDBC 驱动程序。

javax.sql.DataSource 接口是 JDBC 2.0 API 中的新增内容,它提供了连接到数据源的另一种方法。使用 DataSource 对象是连接到数据源的首选方法。更深的理解请参见java 文档。

DiverManager类有个vector(向量)类型的属性drivers。可在向量中加入很多驱动,当DriverManager去取连接的时候,若果drivers里有很多驱动,它会把drivers里面的各个驱动的url和创建连接时传进来的url逐一比较,遇到对应的url,则建立连接。

方法一

 

System.setProperty("jdbc.drivers","com.MySQL.jdbc.Driver");

通过系统的属性设置注册驱动,如果要注册多个驱动,则System.setProperty("jdbc.drivers","com.mysql.jdbc.Driver:com.Oracle.jdbc.Driver");

这种驱动注册方式很少使用。

方法二

 

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

这种方式不会对具体的驱动类产生依赖(即不用import驱动类)。

Class类的forName方法中对参数指定的类进行了装载操作。在这里将com.mysql.jdbc.Driver类装载到jvm。众所周知,类装载时,将执行被装载类的静态代码块,而Driver类有一个静态代码块如下:

static{

try{

java.sql.DriverManager.registerDriver(newDriver());

}catch(SQLExceptione){

thrownew RuntimeException("can't register driver!");

}

}

所以在装载过程中即完成了driver的注册。这也是使用最多的一种注册驱动方式。

方法三

 

DriverManager.registerDriver(newcom.mysql.jdbc.Driver());

会造成DriverManager中产生两个一样的驱动,并会对具体的驱动类产生依赖。

具体来说就是:

1,装载Driver类时注册一次驱动(有关类装载,请参考http://www.yanwushu.com/post/54.html),执行此代码时,又注册一次。

2,由于实例化了com.mysql.jdbc.Driver.class,导致必须import该类,从而具体驱动产生了依赖。不方便扩展代码。

注册jdbc驱动的三种方式的更多相关文章

  1. 注册Jdbc驱动程序的三种方式

    注册Jdbc驱动程序的三种方式 1. Class.forName("com.mysql.jdbc.Driver"); 2. DriverManager.registerDriver ...

  2. JDBC注册驱动的三种方式

    JDBC注册驱动的三种方式 1.通过导入的JDBC的驱动包拿到的com.mysql.jdbc.Driver对象,利用java.sql.DriverManager对象的DriverManager.reg ...

  3. Java通过JDBC连接数据库的三种方式!!!并对数据库实现增删改查

    前言 java连接数据库完整流程为: 1,获得驱动(driver),数据库连接(url),用户名(username),密码(password)基本信息的三种方式. 2,通过获得的信息完成JDBC实现连 ...

  4. JDBC注册驱动的三种方式(MySQL)

    第一种:通过反射Class.forName("com.mysql.jdbc.Driver"); 第二种:通过DriverManage的静态方法DriverManager.regis ...

  5. JDBC基础篇(MYSQL)——通过JDBC连接数据库的三种方式

    package day01_jdbc; import java.sql.Connection; import java.sql.Driver; import java.sql.DriverManage ...

  6. JDBC的批处理操作三种方式 pstmt.addBatch()

    package lavasoft.jdbctest; import lavasoft.common.DBToolkit; import java.sql.Connection; import java ...

  7. java基础-jdbc——三种方式加载驱动建立连接

    String url = "jdbc:mysql://localhost:3306/student?Unicode=true&characterEncoding=utf-8" ...

  8. JDBC 创建连接对象的三种方式 、 properties文件的建立、编辑和信息获取

    创建连接对象的三种方式 //第一种方式 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/ ...

  9. JDBC 创建连接对象的三种方式 、 properties文件的建立、编辑和信息获取

    创建连接对象的三种方式 //第一种方式 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/ ...

随机推荐

  1. 基于redis集群实现的分布式锁,可用于秒杀商品的库存数量管理,有測试代码(何志雄)

    转载请标明出处. 在分布式系统中,常常会出现须要竞争同一资源的情况,本代码基于redis3.0.1+jedis2.7.1实现了分布式锁. redis集群的搭建,请见我的另外一篇文章:<>& ...

  2. iOS面试常见题

    1.耶稣有13个门徒,当中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13个人围坐一圈,从第一个人開始循环报数,数到三排除,最后剩下的人就是叛徒 int people[13] = {1,2,3, ...

  3. Micro Frontends

    Micro Frontends - extending the microservice idea to frontend development https://micro-frontends.or ...

  4. CSS3 弹性盒子(Flex Box) 微信小程序图片通栏

    {{define "chkUrl"}} <!DOCTYPE html><html lang="zh-cmn-Hans"><head ...

  5. nodejs的request模块

    request模块让http请求变的更加简单.(作为客户端,去请求.抓取另一个网站的信息) request的GitHub主页: https://github.com/request/request 最 ...

  6. safair 的css hack

    在css里面使用[;attribute:value;] css参考如下: .header-share li{float: right; margin-left: 20px; [;width: 50px ...

  7. NEU 1681: The Singles

    题目描述 The Signals’ Day has passed for a few days. Numerous sales promotion campaigns on the shopping ...

  8. 计算一个大数n的阶乘的位数宽度(十进制)(log i累加法 )

    输入: 每行输入1个正整数n, (0<n<1000 000) 输出: 对于每个n,输出n!的(十进制)位数. 分析: 这道题采用蛮力法.根据定义,直接求解! 所谓n!的十进制位数,就是 l ...

  9. Do not throw System.Exception, System.SystemException, System.NullReferenceException, or System.IndexOutOfRangeException intentionally from your own source code

    sonarqube的扫描结果提示 https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/exceptions/creatin ...

  10. 【selenium】常见问题

    1鼠标变粗:setting→1.打开设置 点击 plugins 输入ideavim  把 这个勾去掉!这个是插件的配置问题.  2.editor->appearance  去掉 use bloc ...