理解Class.forName(Com.mysql.cj.jdbc.Driver)

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

在使用jdbc的时候这行代码必不可少,我们来仔细理解一下这行代码的意义和原理;

1.理解com.mysql.cj.jdbc.Driver

com.mysql.cj.jdbc.Driver是Driver驱动所在的位置,这个大家应该没问题;

2.理解Class.forName()

Class.forName()是一个反射,但是他没有返回一个Class对象,因为我们不需要;
这是Driver的代码:

public class Driver extends NonRegisteringDriver implements java.sql.Driver {public Driver() throws SQLException {}static {try {DriverManager.registerDriver(new Driver());} catch (SQLException var1) {throw new RuntimeException("Can't register driver!");}}
}

它除了构造方法,就只有一个静态代码块,当我们反射进行的时候,这个类就开始初始化,他的静态代码块内容就已经被执行了,详细可以参考类的初始化https://blog.csdn.net/qq_45895576/article/details/110921522

我们真正需要的是DriverManager.registerDriver(new Driver());这一行代码

因此这样写,同样可以获取数据库中数据

public class jdbcFirstDemo {public static void main(String[] args) throws ClassNotFoundException, SQLException {//1.加载驱动DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());//Class.forName("com.mysql.cj.jdbc.Driver");//2.用户信息和URLString url = "jdbc:mysql://localhost:3306/dbhomework?useUnicode=true&characterEncoding=UTF8&useSSL=true&serverTimezone=UTC";String username = "root";String password = "lixv298618";//3.连接成功数据库对象 Connection代表数据库Connection connection = DriverManager.getConnection(url, username, password);//4.执行SQL的对象Statement statement = connection.createStatement();//5.执行SQL的对象去执行SQL,可能存在结果,查看返回结果String sql = "SELECT * FROM STUDENT";ResultSet resultSet = statement.executeQuery(sql);//返回的结果集while (resultSet.next()){System.out.print(resultSet.getString(1)+" ");System.out.print(resultSet.getString("Sname")+" ");System.out.print(resultSet.getString(3)+" ");System.out.print(resultSet.getInt("Age")+" ");System.out.println(resultSet.getString(5)+" ");}//6.释放连接resultSet.close();statement.close();connection.close();}
}

运行结果:

jdbc(2)——之Class.forName(com.mysql.cj.jdbc.Driver)理解相关推荐

  1. IDEA导入MySQL的jdbc驱动出现“java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver”

    目录 一.一般的解决思路 1.JDBC下载链接 2.选择下载内容,并进行下载 3.将驱动导入java项目 二.依然导入驱动失败怎么办 当我们在idea中使用java操作mysql数据库时会出现: Ex ...

  2. mysql的cj是什么包,Mysql版本java问题(com.mysql.cj.jdbc.Driver和com.mysql.jdbc.Driver)

    老版本com.mysql.jdbc.Driver已弃用 String url1 = "jabc:mysql://127.0.0.1:3306/test"; String url1 ...

  3. Failed to obtain JDBC Connection; nested exception is com.mysql.cj.jdbc.exceptions.CommunicationsEx

    我的是再宿主机连接虚拟机的时候报的这个错 The last packet sent successfully to the server was 0 milliseconds ago. The dri ...

  4. mysql.cj.jdbc_com.mysql.jdbc.Driver和com.mysql.cj.jdbc.Driver的区别

    概述:com.mysql.jdbc.Driver是mysql-connector-java 5中的,而com.mysql.cj.jdbc.Driver是mysql-connector-java 6中的 ...

  5. MySQL报错 Failed to validate connection com.mysql.cj.jdbc.ConnectionImpl

    报错:springboot 项目向 MySQL 请求SqlSession时报错 Creating a new SqlSession SqlSession [org.apache.ibatis.sess ...

  6. com.mysql.cj.jdbc.driver maven_com.mysql.jdbc.Driver和com.mysql.cj.jdbc.Driver的区别

    概述:com.mysql.jdbc.Driver是mysql-connector-java 5中的,而com.mysql.cj.jdbc.Driver是mysql-connector-java 6中的 ...

  7. mac之idea连接MySQL数据库报com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure

    项目场景: 最近入手了一台MacBookPro(谨慎尝试,用惯了windos后使用感具别扭,需要大量时间来适应),下载了最新的idea和最新的mysql8.0.23,然后开始了漫长而艰辛的开始,各种没 ...

  8. mysql.cj.jdbc.Driver报错或者数据库Nullpointer报错

    有时候数据代码怎么看都是正确的但是往数据库里面插入数据的时候会报错很长很长,那么很有可能就是数据连接驱动版本和你的数据库版本不匹配问题. 问题1 Loading classcom.mysql.jdbc ...

  9. 报错:java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver at java.base/jdk.internal.loader.Bui

    前言必读 读者手册(必读)_云边的快乐猫的博客-CSDN博客 一.遇到问题 : java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver   ...

最新文章

  1. ubuntu用不了root用户:~$ su - root Password: su: Authentication failure怎么办?
  2. 运维人员 | 需要了解的数据中心的网络威胁
  3. (转)公钥,私钥和数字签名这样最好理解
  4. 埃及分数(codevs 1288)
  5. mockito模拟依赖注入_Mockito @InjectMocks –模拟依赖注入
  6. 第一台电子计算机于1846年诞生,全国2010年1月高等教育自学考试计算机与网络技术基础试题.doc...
  7. appscan如何进行web端安全性测试_如何进行WEB安全性测试?
  8. m.555lu.co list.php,CST 仿真色散曲线
  9. 如何破解zip压缩文件的密码问题?
  10. oracle清空实例数据,Linux下删除oracle实例
  11. Javascript 如何实现继承?
  12. 公司小程序,公众号申请支付流程
  13. 设计师:设计师知识储备之硬装部分/软装部分简介、家装材料知识(吊顶材料/门窗材料/五金材料/墙面材料/地面材料/胶粘材料/油漆材料/水电材料/瓦工部分)之详细攻略
  14. ch341a i2c 安卓_ch341a编程器软件继续更新-产生芯片列表功能
  15. C++-二分查找库函数
  16. 2022年全球与中国COB发光二极管行业发展趋势及投资战略分析报告
  17. 大数据——Flink 知识点整理
  18. 微信小程序基础库的问题
  19. IRQ和FIQ中断的区别
  20. 电气工程及其自动化-课程体系介绍

热门文章

  1. python打印数字金字塔
  2. 使用 亿通行的可以领取抵扣券
  3. Unix下针对邮件,搜索,网络硬盘等海量存储的分布式文件系统项目
  4. 秀日记:这个升学比例吓坏大家了
  5. CPU漏洞修复工具下载,专门针对“Meltdown”(融化)和“Spectre”(幽灵)两组CPU漏洞,360安全卫士国内首发免疫工具
  6. Google CodeJam习题:Alien Numbers
  7. 海思3516系列芯片SPI速率慢问题深入分析与优化(基于PL022 SPI 控制器)
  8. onLoad和onShow触发时机及区别
  9. 从NMS谈起——实时ANMS
  10. SQL注入之联合查询(MySQL)