Java中怎么连接MySQL数据库,怎么上传驱动

Java连接MySQL数据库,核心步骤是下载匹配版本的MySQL Connector/J驱动,将其添加到项目类路径,然后在代码中加载驱动并建立连接。

mysql连接驱动版本选择与下载

选择驱动版本是连接MySQL的第一步,直接决定连接是否成功。多数情况下,你运行的MySQL版本决定了驱动版本的上限,比如MySQL 8.0以上就需要使用8.x版本的驱动,而MySQL 5.7则可以用5.1.x或8.x两种选择。参考2

查看MySQL版本匹配驱动

  • MySQL 5.5 – 5.7:推荐使用onnector/J 5.1.x系列,最后一个稳定版是5.1.49。
  • MySQL 8.0:必须使用Connector/J 8.0.x系列,目前最新稳定版在8.0.33左右。
  • MySQL 8.1及以上:需要8.1.x以上驱动,但国内多数生产环境仍停留在8.0。

行业共识认为,驱动版本尽量与MySQL大版本保持一致,避免因协议差异导致连接失败。

驱动下载渠道

  • 官方下载页:从MySQL官网下载Connector/J,选择Platform Independent的ZIP包,解压后得到jar文件。
  • Maven中央仓库:通过Maven依赖直接获取,无需手动下载,这是目前最主流的方式。
  • 国内镜像:如果Maven下载慢,可使用简米云或华为云镜像,速度明显提升。

驱动文件命名规则

jar文件通常命名为mysql-connector-java-8.0.33.jar,注意8.x版本后类名有所变化,驱动类从com.mysql.jdbc.Driver变为com.mysql.cj.jdbc.Driver很多新手在连接8.0版本时报错,正是因为没有使用新驱动类名

上传MySQL数据库连接驱动到项目

驱动文件拿到后,需要将它部署到项目中,不同项目类型有不同的上传方式,我通常按以下三种场景操作。

Java中怎么连接MySQL数据库,怎么上传驱动

通过Maven添加依赖(推荐)

Maven项目只需在pom.xml中加入依赖,坐标如下:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.33</version>
</dependency>
  • 版本号根据实际需求修改,建议使用RELEASE版本
  • 依赖会自动下载jar包并打包到最终产物中,无需手动上传。
  • 如果使用Gradle,写法类似implementation 'mysql:mysql-connector-java:8.0.33'

手动上传jar包到WEB-INF/lib

对于传统Java Web项目(非Maven),需要将驱动jar包直接复制到项目的WEB-INF/lib目录下。

  • 操作步骤:下载jar包,放入src/main/webapp/WEB-INF/lib(或对应目录),然后在IDE中刷新项目。
  • 注意:如果使用Eclipse,还需将jar包添加到Build Path,否则运行时会报ClassNotFoundException。
  • 在IDEA中,手动放在lib目录后,可以右键jar包选择Add as Library,或直接使用Project Structure模块添加。

上传到服务器运行环境

在部署阶段,驱动jar包需要进入Tomcat或应用服务器的类路径。

  • 嵌入Tomcat:将jar包放在$CATALINA_HOME/lib下,所有应用共享。
  • 应用独立:放在项目自身的WEB-INF/lib,只对当前应用生效。
  • Spring Boot:直接嵌入在Fat Jar中,无需独立上传,只需要在pom.xml里声明依赖。

如果你的项目使用直接拷贝jar包到服务器的方式,请务必检查jar权限,确保可读

Java中怎么连接MySQL数据库,怎么上传驱动

,否则驱动无法加载。参考2

java连接mysql数据库代码示例(JDBC连接)

驱动部署完成后,编写连接代码,这里给出一个标准的JDBC连接示例,并解释每一步。

加载驱动类

Class.forName("com.mysql.cj.jdbc.Driver");
  • MySQL 8.x使用com.mysql.cj.jdbc.Driver
  • MySQL 5.x使用com.mysql.jdbc.Driver
  • 从JDBC 4.0开始,驱动会自动注册,这一步可以省略,但显式加载仍然是保险做法

建立连接

String url = "jdbc:mysql://localhost:3306/databaseName?useSSL=false&serverTimezone=Asia/Shanghai";
String username = "root";
String password = "yourPassword";
Connection conn = DriverManager.getConnection(url, username, password);
  • 连接URL必须包含数据库名称,IP和端口默认localhost:3306。
  • 参数useSSL=false:关闭SSL,本地开发推荐。
  • 参数serverTimezone=Asia/Shanghai:解决时区报错,MySQL 8.0必须指定。
  • 如果连接不上,先检查MySQL服务是否启动,再检查防火墙和端口权限

执行查询

Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT  FROM users");
while (rs.next()) {
    System.out.println(rs.getString("username"));
}

或使用PreparedStatement防SQL注入:

PreparedStatement ps = conn.prepareStatement("SELECT  FROM users WHERE id = ?");
ps.setInt(1, 1);
ResultSet rs = ps.executeQuery();

关闭资源

Java中怎么连接MySQL数据库,怎么上传驱动

rs.close(); stmt.close(); conn.close();

务必在finally块中按顺序关闭,或者使用try-with-resources自动关闭,业界常见错误之一是忘记关闭连接,导致数据库连接池耗尽。参考2

常见问题与解决方案

问题1:java连接mysql8.0版本驱动为什么报错“The server time zone value ‘?й??’ is unrecognized”?

解答:MySQL 8.0要求显式设置时区,在连接URL中添加serverTimezone=Asia/ShanghaiserverTimezone=UTC即可,如果不想在URL中写死,可以在MySQL配置文件my.cnf中设置default-time-zone='+08:00'

问题2:上传驱动jar包后仍然报“ClassNotFoundException: com.mysql.cj.jdbc.Driver”?

解答:先确认jar包是否在类路径中,对于Tomcat项目,检查WEB-INF/lib下是否有jar文件,并重启服务器,如果使用IDE,手动添加Build Path,对于Maven项目,检查pom.xml依赖是否生效,且scope不是provided。很多情况是jar包没有随项目一起发布,可以查看target目录确认。

问题3:Maven依赖下载慢,或者MySQL驱动版本不匹配怎么办?

解答:使用国内镜像仓库,如简米云仓库,在pom.xml的<repositories>中添加<id>aliyun</id><url>https://maven.aliyun.com/repository/public</url>,版本匹配方面,在MySQL官方文档的Connector/J版本兼容表中查找对应关系,通常驱动版本高于MySQL版本不会有大问题,但低于可能无法连接

连接MySQL数据库,驱动部署是基础,代码配置是细节,版本匹配决定成败。 按照上述步骤操作,绝大多数连接问题都能在几分钟内解决。

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://idctop.com/article/532678.html

(0)
如何使用HTML表单代码和输入,怎么用?
上一篇 2026年7月31日 03:49
如何在一台服务器配置两个Tomcat?,需要注意什么?
下一篇 2026年7月31日 03:53

相关推荐

  • 碧蓝航线缺舰队开发资材怎么办?舰队开发资材怎么获得最快?

    构建高可靠、可扩展的核心开发实践核心结论: 开发高效稳定的舰队开发资材管理系统,关键在于采用模块化、可扩展的架构设计,实现资材数据的精准追踪、高效操作与实时同步,并通过严密的事务控制与监控告警机制保障数据一致性与系统可靠性,核心架构设计:模块化与解耦独立服务拆分: 将资材系统拆分为核心微服务(处理核心逻辑)、库……

    2026年2月15日
    16630
  • 开发语言和脚本语言有什么区别?哪种更适合初学者学习

    在软件工程的技术选型中,开发语言与脚本语言并非对立关系,而是构建高效系统的互补双翼,核心结论在于:开发语言负责构建系统的“骨架”与核心逻辑,保障性能与稳定性;脚本语言则负责填充“血肉”与实现灵活配置,提升开发效率与可维护性,一个成熟的架构设计,往往是通过开发语言奠定底层基础,再利用脚本语言实现业务逻辑的灵活编排……

    2026年3月12日
    12700
  • 佛山网站建设哪家专业_创建设备

    在佛山网站建设领域,创建设备凭借其技术驱动和定制化服务,成为许多企业衡量专业性的重要参考,选择佛山网站建设公司的关键维度技术与开发能力网站建设不是简单的页面堆砌,而是涉及前端架构、后端逻辑、数据库优化和安全性加固的系统工程,业内专家指出,团队的技术栈深度决定项目上限,佛山本土的建站公司中,部分团队仅依赖模板套用……

    2026年8月12日
    500
  • 云数据库是什么?云数据库和传统数据库的区别

    关于云数据库的所有信息在数字化转型的深水区,数据已成为企业的核心资产,对于开发者、初创团队以及中大型企业而言,选择一款稳定、高效且具备高扩展性的云数据库,不仅是技术架构的基石,更是业务连续性的保障,本文将从性能实测、安全架构、成本效益及售后服务四个维度,对当前主流的云数据库产品进行深度测评,并结合2026年的市……

    2026年6月10日
    5300
  • workstation共享虚拟机怎么用, 详细教程步骤有哪些

    简单说,Workstation共享虚拟机就是VMware Workstation里允许局域网内其他电脑通过远程连接来访问和使用的一台虚拟机,它以服务器模式运行,让团队协作更直接,共享虚拟机到底是什么过去用VMware Workstation,虚拟机总是“绑”在创建它的那台电脑上,要想让同事访问同样的环境,通常得……

    2026年9月11日
    100
  • VPS开虚拟机卡顿怎么优化提升,哪个配置跑虚拟机最流畅?

    VPS开虚拟机卡顿,往往不是CPU主频不够,而是磁盘I/O和内存分配策略拖了后腿,先换NVMe硬盘并安装VirtIO驱动,再调整Swap和内核参数,流畅度能提升一大截,为什么VPS开虚拟机比独立服务器更容易卡顿?这个问题很多用户一开始想不通:明明VPS配置写着4核8G,独立服务器也是4核8G,怎么一开虚拟机差距……

    2026年9月12日
    000
  • iphone设置开发者模式在哪,iPhone开发者选项怎么打开

    在iOS生态中,获取高级调试权限是测试App性能、排查网络故障以及进行自动化操作的必经之路,这一过程的核心在于激活系统隐藏的“开发者模式”或通过Xcode工具进行配置,核心结论是:普通用户与开发者在iPhone上设置开发者选项的路径截然不同,iOS 16及以上版本引入了独立的“开发者模式”开关,这不仅是安全机制……

    2026年3月30日
    14700
  • PHP服务端如何接收消息?php接收websocket数据详解

    在构建高并发、低延迟的后端服务时,PHP作为长期占据Web开发半壁江山的语言,其服务端消息接收与处理能力直接决定了系统的稳定性与用户体验,本次测评聚焦于主流云服务器厂商在PHP环境下的消息队列消费、WebSocket长连接维持以及HTTP POST数据接收的性能表现,旨在为开发者提供真实、可量化的选型依据,测试……

    2026年6月13日
    2600
  • docker开发环境怎么搭建?docker开发环境搭建详细教程

    构建高效、一致且可移植的docker 开发环境,是现代软件工程团队提升交付速度、消除“在我机器上能跑”这一顽疾的核心策略,通过容器化技术,开发者能够将应用及其依赖打包成轻量级、独立的镜像,确保代码从开发、测试到生产的全生命周期环境一致性,从而大幅降低环境配置成本,提升团队协作效率,核心价值:环境标准化的必然选择……

    2026年4月10日
    8700
  • Nginx OCSP装订是什么?Nginx配置OCSP装订教程

    Nginx OCSP装订:提升HTTPS性能与安全的必选优化在构建高可用、高安全的Web服务架构时,HTTPS的部署已是行业标配,许多运维人员在完成SSL证书配置后,往往忽略了OCSP装订(OCSP Stapling)这一关键优化环节,对于运行Nginx服务器的企业而言,开启OCSP装订不仅是提升访问速度的技术……

    2026年7月10日
    11800

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注