You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Servlet与MySQL的项目数据库连接错误求助

解决JSP连接MySQL时的com.mysql.jdbc.Driver找不到问题

核心原因

你遇到的错误本质是JVM无法找到MySQL JDBC驱动类,大概率是项目缺少对应驱动包,或是驱动版本与MySQL服务器版本不兼容导致的。

具体解决步骤

1. 匹配MySQL版本与驱动包

  • 若你的MySQL是8.0及以上版本:驱动类名已更新为com.mysql.cj.jdbc.Driver,且URL必须添加时区参数。
  • 若为MySQL 5.x版本:驱动类保持com.mysql.jdbc.Driver即可。

2. 给项目添加JDBC驱动包

手动添加方式

  • 下载对应版本的MySQL JDBC驱动jar包(比如mysql-connector-java-8.0.30.jar)。
  • 将jar包复制到项目的WEB-INF/lib目录下(Servlet/JSP项目的依赖必须放在此目录才能被Web服务器识别)。

Maven管理方式(若项目用Maven)

在pom.xml中添加对应依赖:

<!-- MySQL 8.0+ 版本依赖 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.30</version>
</dependency>

<!-- MySQL 5.x 版本依赖 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.49</version>
</dependency>

3. 调整代码适配驱动版本

针对MySQL 8.0+版本

修改代码中的驱动类和数据库连接URL:

// 替换原驱动类加载代码
Class.forName("com.mysql.cj.jdbc.Driver");
// 添加时区参数,示例用UTC,也可替换为Asia/Shanghai
Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/recipes_db?useSSL=false&serverTimezone=UTC","root","");

针对MySQL 5.x版本

确认驱动包已放入WEB-INF/lib后,原代码的驱动类名无需修改,但可检查URL是否正确(5.x版本不需要时区参数)。

4. 额外排查项

  • 确认MySQL服务正在运行(可通过net start mysql命令或系统服务管理器查看)。
  • 核对数据库用户名、密码是否正确,root用户是否拥有recipes_db的访问权限。
  • 检查3306端口是否被其他程序占用。
  • 重启Web服务器(如Tomcat),确保新添加的驱动包被正确加载。

优化建议(可选)

  • 不要在JSP中直接编写数据库连接逻辑,建议封装到独立的Java工具类(如DBUtil.java),提升代码复用性和可维护性。
  • 使用try-with-resources语法自动关闭数据库资源,避免资源泄漏:
try (Connection con = DriverManager.getConnection(...);
     Statement st = con.createStatement();
     ResultSet rs = st.executeQuery(query)) {
    // 结果集处理逻辑
} catch (Exception e) {
    // 异常处理
}

内容的提问来源于stack exchange,提问作者Reem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 17:34:51