在学习JDBC的时候,通常有两种方式去注册数据库驱动程序(这里采用MySQL数据库),分别为:
Java代码

1. DriverManager.registerDriver(new Driver());
2. Class.forName(“com.mysql.jdbc.Driver”);

那么这两种方式有什么异同呢? 查看com.mysql.jdbc.Driver源码, 发现如下静态代码块: 当加载Driver类时,静态代码块也会new一个Driver对象。

package com.mysql.jdbc;
public class Driver extends NonRegisteringDriver implements java.sql.Driver {//// Register ourselves with the DriverManager//static {try {java.sql.DriverManager.registerDriver(new Driver());} catch (SQLException E) {throw new RuntimeException("Can't register driver!");}}......
}

那么, Class.forName(“com.mysql.jdbc.Driver”)的时候,也会首先去执行这个静态代码块,于是和DriverManager.registerDriver(new Driver())有了相同的效果。

那么对于这两种方法,在这里,推荐使用第二种,即Class.forName(“类名”)的方式。原因有两点
1、在我们执行DriverManager.registerDriver(new Driver())的时候,静态代码块也已经执行了,相当于是实例化了两个Driver对象。
2、 DriverManager.registerDriver(new Driver())产生了一种对MySQL的一种依赖。而Class.forName的方式我们完全可以在运行的时候再动态改变。

new com.mysql.jdbc.Driver()为什么Driver会创建两次相关推荐

  1. logstash mysql eror_Logstash安装记录(报错com.mysql.jdbc.Driver not loaded的解决)

    Logstash是es官方标配的ELK中的"L",它们三者的关系是这样:"E"指elasticsearch,用来提供核心的搜索服务:"L"指 ...

  2. weblogic 配置mysql数据源Cannot load driver class: com.mysql.jdbc.Driver的问题

    这两天在学习weblogic,因为我本身用mysql较多,所以在weblogic配置数据源时,就 选择了mysql,但是你在测试时会发现报一个错误: Cannot load driver class: ...

  3. java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 解决方法 java.lang.ClassNotFoundException: com.

    java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 解决方法 java.lang.ClassNotFoundException: com.m ...

  4. Loading class `com.mysql.jdbc.Driver'. This is dep

    异常信息: Loading class com.mysql.jdbc.Driver'. This is deprecated. The new driver class iscom.mysql.cj. ...

  5. 错误:“Cannot load JDBC driver class ‘com.mysql.jdbc.Driver”的解决方法

    错误:"Cannot load JDBC driver class 'com.mysql.jdbc.Driver"的解决方法 参考文章: (1)错误:"Cannot lo ...

  6. Idea运行web项目时,提示java.lang.ClassNotFoundException: com.mysql.jdbc.Driver解决方法

    Idea运行web项目时,提示java.lang.ClassNotFoundException: com.mysql.jdbc.Driver解决方法 参考文章: (1)Idea运行web项目时,提示j ...

  7. c3p0数据源配置抛出Could not load driverClass com.mysql.jdbc.Driver的解决方案

    c3p0数据源配置抛出Could not load driverClass com.mysql.jdbc.Driver的解决方案 参考文章: (1)c3p0数据源配置抛出Could not load ...

  8. jsp项目中连接数据库解决java.lang.ClassNotFoundException: com.mysql.jdbc.Driver的问题

    jsp项目中连接数据库解决java.lang.ClassNotFoundException: com.mysql.jdbc.Driver的问题 参考文章: (1)jsp项目中连接数据库解决java.l ...

  9. Loading class `com.mysql.jdbc.Driver'. This is deprecated警告处理

    com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver的区别 mysql客户端6以后,数据库驱动com.mysql.jdbc.Driver'已经被弃用了.应当 ...

最新文章

  1. 电路设计中电阻电容电感的选择原则
  2. win10 IIS(互联网信息服务) 及 外网访问tomcat
  3. STM32-内存管理
  4. 推荐算法炼丹笔记:非采样的负样本
  5. 【收藏】mydockfinder下载地址
  6. 面试题 HashMap和HashTable有什么区别
  7. Web前端期末大作业--响应式电竞博客网页设计(HTML+CSS+JavaScript)实现
  8. SAR成像(七):RD成像算法
  9. 更新项目java_java – 什么是Maven – 更新项目?
  10. 网吧赚钱靠什么不求人
  11. 微型计算机原理与接口技术综述论文,微型计算机原理接口与技术综述论文汇编.doc...
  12. python 多重类继承__init__
  13. 显色指数(CRI)计算软件-升级版可视化界面
  14. CentOS下搭建Frp内网穿透服务
  15. IT项目经理与职能经理的工作有什么不同
  16. Flutter 错误解决Building with plugins requires symlink support.
  17. Java单链表递归逆置
  18. js jquery 获取元素(父节点,子节点,兄弟节点),元素筛选
  19. 初级程序员软考重点5 程序设计语言
  20. 记录-小程序720°VR(跳转H5页面实现)

热门文章

  1. 《C程序设计语言》- 字符输入和输出
  2. Tips5:通过 alt+鼠标左键 来完全展开或收缩层级
  3. spring事件通知机制详解
  4. [原创] Legato 8.1 oracle full backup skip 奇怪的问题处理过程 -- 非调度日期手工运行调度也不成功(skip)...
  5. 两台Oracle服务器,使用udl测试连接
  6. 使用ASP.NET Abstractions增强ASP.NET应用程序的可测试性
  7. 本站将进行有关《大道至简》的讨论~
  8. Kotlin 性能优化利器 —— Sqeuence 原理浅析
  9. 一分钟解决idea端口占用问题
  10. 惊天大谎:让穷人都能上网是Facebook的殖民阴谋?