MySQL JDBC驱动包引入有版本要求吗

提示:有关数据库的任何操作,请事先都做好备份,一定不会错的;

文章目录

  • 前言
  • 一、com.mysql.jdbc.Driver和com.mysql.cj.jdbc.Driver如何选择?
    • 1、概念
    • 2、引入驱动
    • 3、总结


前言

新老项目的交替中,如果你使用的是mysql,并且做了相关版本的升级,可能会遇到一些关于数据库的驱动问题,那就是引入哪个驱动包;


一、com.mysql.jdbc.Driver和com.mysql.cj.jdbc.Driver如何选择?

1、概念

在回答这个之前,我们需要了解几个概念,什么是数据库驱动,什么是驱动类名,什么是数据库版本

(1) 什么是数据库驱动

在这里插入图片描述
这个jar包一定不陌生,我们初期初学时不用maven的情况下,想调用mysql的话,这个是一定要引入到工程里的包,案例中的是Mysql 8.0版本的驱动; 驱动可以再maven的仓库中找到https://mvnrepository.com/artifact/mysql/mysql-connector-java

驱动的概念可以简单理解为:是一种用户和数据库之间的沟通交流的工具类,内置了很多丰富的功能API,如连接,数据分析处理等等方法;

(2) 驱动类名

既然驱动是一个工具类,我们想要调用方法的时候,自然需要引入对应的工具类来使用,而com.mysql.jdbc.Drivercom.mysql.jdbc.Driver就是不同版本驱动中所对应的类名;

(3) 数据库版本

数据库版本就是我们在PC中安装的mysql本地服务版本,他通常决定了我们代码中该使用什么版本的驱动,以及相关数据库操作的语法和功能;

2、引入驱动

说完概念,标题说的问题常见的地方就是关于数据库驱动的引入,在代码中,引入驱动的方式无非就几种方式;
1、通过Class.forName
这是最早比较常用的方式了,你只需要将驱动的类名作为参数传进去就好;算是入门必学方式吧;

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

2、通过DriverManager引入
这种方式是后续Java版本中推荐的方式,也就是在Java5之后吧,所谓推荐,说白了就是让我们代码的调用更加优雅一些罢了,毕竟直接写驱动类名字符串有点磕碜吧;

Driver driver = new com.mysql.jdbc.Driver();  // Driver driver = new com.mysql.cj.jdbc.Driver();
DriverManager.registerDriver(driver);

注意的是:上面代码中DriverManager的这个方式是显式调用方法注册,不过我们大多情况下不会去特意这么写,因为驱动在加载的时候已经自动做了注册动作了,我们用的时候,通常都是直接连接数据库进行后续操作的;

DriverManager.getConnection(String url, String user, String password)

3、maven直接引入

这种方式直接在maven的pom文件中引入对应版本驱动依赖即可;
在这里插入图片描述

3、总结

了解完驱动的概念和引入方式后,我们就知道
1、com.mysql.jdbc.Driver这个驱动类名是 MySQL Connector/J 5.1.x 版本驱动中使用的 JDBC 驱动类名,而MySQL Connector/J 5.1.x是mysql 5.x版本适用的驱动

2、com.mysql.cj.jdbc.Driver这个驱动类名是 MySQL Connector/J 8.0.x 版本驱动中使用的 JDBC 驱动类名,MySQL Connector/J 8.0.x 是Mysql8.x版本系列的推荐驱动,需要注意的是:他是兼容Mysql 5.7的,再早期的版本就未必了,所以就是为什么有的人说自己明明是mysql5.x的版本,也能用8.0版本的驱动原因;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/29799.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【并发编程实战】内存模型--解决可见性和有序性的利器

一.前言 在前面讲了三个问题, 缓存导致的可见性问题,编译优化带来的有序性问题,线程切换带来的原子性问题。既然存在问题,那么总要有解决方案的,这一章里主要就是解决这三个问题的关键点--内存模型 二.内存模型 2.1 …

hdfs高可用文件系统架构

1、整体架构 2、角色简介 2.1、namenode NameNode 是 HDFS 集群中的核心组件,负责管理文件系统的元数据、处理客户端请求、管理数据块、确保数据完整性和高可用性。由于其重要性,NameNode 的性能和可靠性直接影响整个 HDFS 集群的性能和可靠性。在生产…

【漏洞复现】CRMEB开源电商系统 /api/products SQL注入漏洞(CVE-2024-36837)

0x01 产品简介 CRMEB开源电商系统是一款由西安众邦网络科技有限公司打造的全栈式电商解决方案,旨在为开发者和商家提供高性能、智能化的电商平台服务。该系统集成了CRM(客户关系管理)、ERP(企业资源规划)和EB(电子商务)的功能,通过深度结合这些功能&…

1.4k star 项目 CMakeTutorial 阅读和点评

1.4k star 项目 CMakeTutorial 阅读和点评 文章目录 1.4k star 项目 CMakeTutorial 阅读和点评0. 概要1. CUDA 目录2. FindPackage 目录3. Installation 目录4. PackageManage 目录5. PythonExtension 目录6. ImportExternalProject 目录总结 0. 概要 在 github 搜索关键字 CM…

骨传导耳机品牌排行前五名揭晓:精选5款音质卓越、佩戴舒适的优选产品!

骨传导耳机是目前非常热门的蓝牙耳机,有很多人都想去尝试,但又很多消费者再入手后,都出现了佩戴不舒服,音质刺耳等问题,作为一位拥有十多年经验的数码测评师,我有必要提醒大家,尽管市面上各种骨…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] A先生的货运计划(200分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 📎在线评测链接 A先生的货运计划(200分) 🌍 评测功能需要 订阅专栏 后私信…

Python 条件控制语句

条件控制语句是编程中用于基于特定条件执行不同代码块的一种结构。Python提供了几种条件控制语句,包括if、elif和else。这些语句允许程序根据不同的条件执行不同的代码路径 if 语句 if语句是最基本的条件控制语句,用于检查一个条件是否为真。如果条件为真…

京东健康·全球医疗AI创新大赛开启!32万奖金池等你来拿!

京东健康全球医疗AI创新大赛是由京东健康发起,以探索医疗行业前沿技术与创新应用为导向、携手产学研各界力量,通过AI创新促进医疗服务行业高质量发展的一场大赛。 本次大赛聚焦“睡眠监测智能算法”与“医疗大模型创新应用”两个课题方向,面…

第55期|GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区,集成了生成预训练Transformer(GPT)、人工智能生成内容(AIGC)以及大语言模型(LLM)等安全领域应用的知识。在这里,您可以找…

操作系统笔记(自用随笔)

如有错误,欢迎指正!!!

【Linux Vim的保姆级教程】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

【网络安全的神秘世界】Kali 自带 Burp Suite 使用指南:字体与CA证书设置详解等

🌝博客主页:泥菩萨 💖专栏:Linux探索之旅 | 网络安全的神秘世界 | 专接本 | 每天学会一个渗透测试工具 Kali 自带 Burp Suite 使用指南目录 Burp Suite的打开方式设置Burp Suite软件的字体大小查看Burp Suite 默认代理在火狐浏览器…

智能机械设备如何远程运维?向日葵SDK提供专业方案

随着物联网技术的不断发展,智能化、自动化的物联网机器人设备开始出现在诸多行业中,大幅提升生产效率,带动产业转型和升级,比较有代表性的包括农业、园艺、施工、测绘和设施服务等领域。 在这些传统意义上“人力密集型”的产业中…

c++里 lamda 表达式,其实被编译器处理为匿名类,并实例化为匿名对象

该匿名对象定义了括号 () 运算符函数,所以可以像函数一样被调用。 lamda 表达式必须在函数作用域中定义。通过按值捕获或按引用捕获,可以使用所在函数中定义的变量。在类的成员函数中定义的 lamda 表达式,若捕获了 this ,则可以修…

SpringBoot的入门案例

1、创建一个Maven工程 2、点击设置自动导入jar包 3、导入spring boot需要的依赖 打开sping boot的文档 导入依赖的pom.xml配置内容 4、创建一个spring boot的执行入口程序 5、写controller,service,dao的页面逻辑代码 6、测试,运行工程&#…

总结一下 C# 如何自定义特性 Attribute 并进行应用

前言 Attribute(特性)是一种用于为程序元素(如类、方法、属性等)提供元数据信息的方法。 特性是一种声明式的信息,附加到程序元素上,提供额外的数据用于描述和控制这些元素的行为。 在编译和运行时&…

Git快速上手

初识Git 是一个免费开源, 分布式的代码版本控制系统, 帮助开发团队维护代码 作用: 记录代码内容,切换代码版本,多人开发时高效合并代码内容 Git和GitHub Git是一个软件, Github是一个网站,两者的功能都是提供版本控制服务. 官网: GitHub: Let’s build from here GitHub …

oracle12c到19c adg搭建(三)oracle19c数据库软件安装

由于这里的19c是做备库所以我们只安装软件不用创建实例,实例由主库同步过来 解压软件到安装目录 注意19c得db要直接解压到19c得软件安装目录 [rooto12u19p software]# ls V982063-01.zip [rooto12u19p software]# ls -ll total 2987996 -rw-r--r-- 1 root ro…

【css】创建一个带有上矩形和下倒三角角标

涉及到的主要CSS属性&#xff1a; clip-path&#xff1a;使用CSS剪切路径属性创建上矩形和下倒三角形的形状。 transform: scale(0.8);&#xff1a;缩小角标的大小&#xff0c;使其看起来更协调。完整html及css: <!DOCTYPE html> <html lang"en"><h…

PAT B1008. 数组元素循环右移问题

题目描述 一个数组A中存有N(N>O)个整数&#xff0c;在不允许使用另外数组的前提下&#xff0c;将每个整数循环向右移M(M≥0)个位置,即将A中的数据由( …)变换为(……)(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,则应如何设计移动的方法?输…