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/Shanghai或serverTimezone=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://test.idctop.com/article/532678.html

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

相关推荐

  • WadiPurpleVPS测评,14美元/月方案实测对比,WadiPurpleVPS怎么样

    WadiPurpleVPS 14美元/月方案实测结论:该方案在东南亚节点延迟表现优异,适合轻量级建站与跨境业务,但I/O性能受限于共享资源,不适合高并发数据库场景,核心配置与价格竞争力分析在2026年的VPS市场中,14美元价位段是竞争最为激烈的“甜点区”,WadiPurpleVPS推出的这一方案,主打性价比与……

    2026年5月15日
    5100
  • 服务器2008 r2怎么查看开机启动项

    在Windows Server 2008 R2上查看开机启动项,最直接的方法是使用系统配置工具(msconfig),但更全面、更专业的管理需要结合服务管理器、注册表和任务计划程序,很多管理员在排查服务器启动缓慢或资源占用过高的问题时,往往卡在第一步:找不到启动项管理入口,这篇文章将按照从易到难的顺序,带你完整梳……

    2026年8月18日
    400
  • 青岛服务器托管和租用差在哪?托管和租用哪个更划算?

    托管是用你自己的服务器硬件,只租机房的带宽和场地;租用是连硬件带服务全部从IDC服务商手里买现成的,前者适合有硬件基础、想长期控制成本的团队,后者适合追求快速上线、不想操心运维的企业,两者在成本结构、运维权限、故障响应速度上有本质差异,选错方向每年可能多花几万块冤枉钱,青岛服务器托管和租用本质区别:你是“房东……

    2026年8月12日
    800
  • Justhost支持一键切换机房吗?不限流量VPS月付低至$1.07

    Justhost近期大更新支持预设程序与一键切换机房,月付低至$1.07且解锁流媒体,是追求高性价比与灵活网络环境的用户首选方案,在VPS租赁市场日益内卷的当下,服务商之间的竞争早已从单纯的硬件参数比拼,转向了用户体验与功能灵活性的深度较量,Justhost此次推出的更新,直击了众多开发者、建站者以及跨境业务从……

    2026年6月28日
    1410
  • 香港Premium VPS CN2 GIA线路好用吗?2026年香港VPS推荐

    中国香港Premium VPS凭借CN2 GIA线路实现低延迟高稳定连接,$39.9/月起即可拥有1核1G内存及400G流量,是跨境业务与开发测试的高性价比首选,在数字化浪潮席卷全球的2026年,网络基础设施的质量直接决定了业务运行的效率与用户体验,对于许多需要连接中国大陆与海外市场的企业及个人开发者而言,选择……

    2026年7月3日
    8400
  • 更新调试流用哪个api?调试流接口调用方法

    更新调试流通常使用 stream.update() 或 stream.patch() API,具体取决于你是需要全量替换还是增量修改,且必须携带有效的身份验证令牌,在2026年的开发环境中,流式处理(Streaming)已经成为实时数据交互的标准配置,无论是构建即时通讯应用、实时协作工具,还是物联网数据监控面板……

    程序开发 2026年5月27日
    3900
  • 人工智能课程哪家好,零基础怎么学人工智能课程?

    在数字经济时代,掌握人工智能技术已成为职业发展的关键杠杆,面对海量且良莠不齐的学习资源,学习者往往陷入迷茫,核心结论在于:一套优质的AI人工智能课程应当构建从数学基础到前沿算法的完整知识闭环,并强调工程落地能力,而非单纯的理论堆砌, 只有通过系统化的学习路径,将理论理解与代码实践深度融合,才能真正将技术转化为解……

    2026年2月20日
    13700
  • AI智能音响发展现状如何,未来智能音响趋势怎么样?

    AI智能音响已从单一的音频播放工具,演变为具备主动感知能力的家庭智能控制中枢,未来的核心竞争力不再局限于硬件音质,而在于大模型赋能下的自然交互能力、全屋生态互联的深度以及个性化服务的精准度,这一行业正在经历从“指令式交互”向“对话式、生成式交互”的跨越,谁能率先解决语义理解与生态隔阂的痛点,谁就能主导智能家居的……

    2026年2月26日
    15300
  • 大开发图片是什么意思?大开发图片素材哪里找

    高质量视觉素材的获取与应用,直接决定了数字内容营销的成败,在当前的互联网生态中,图片不再仅仅是文字的陪衬,而是信息传递的核心载体,核心结论在于:成功的图片开发与利用,必须构建一套从精准获取、深度加工到合规使用的完整闭环体系,这不仅能显著提升用户体验,更能为网站带来显著的SEO流量红利, 所谓的大开发图片,本质上……

    2026年3月11日
    11200
  • Excel中p值检验怎么做?p值小于0.05代表什么

    p值的直观理解业内专家指出,p值代表的是“在原假设成立的前提下,观察到当前样本结果或更极端结果的概率”,通俗点说,如果p值很小(比如0.03),说明如果两组数据其实没区别,却出现这么大差距的概率只有3%,这概率太低了,低到我们可以怀疑“其实没区别”这个前提,从而相信两组数据确实有区别,p ˂ 0.01:极显著差……

    2026年7月8日
    12900

发表回复

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