鱼C论坛

 找回密码
 立即注册
查看: 332|回复: 7

[已解决]在学JDBC 但无法链接数据库 请问是怎么回事呢?

[复制链接]
发表于 2023-12-15 06:12:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

但无法链接数据库 请问是怎么回事呢?

驱动包已经成功导入

数据库正常运行

代码如下


package com.itheima.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class JDBCDemo {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        Class.forName("com.mysql.jdbc.Dirver");

        String url = "jdbc:mysql://127.0.0.1:3306/db1";
        String username = "root";
        String password = "root";

        Connection conn = DriverManager.getConnection(url, username, password);

        String sql = "update account set money = 2000 where id = 1";

        Statement stmt = conn.createStatement();

        int count = stmt.executeUpdate(sql);

        System.out.println(count);

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

    }
}
最佳答案
2023-12-15 06:13:02
在代码中,找到以下这行代码:

Class.forName("com.mysql.jdbc.Dirver");

将其中的 "Dirver" 修改为 "Driver",因为驱动类的名称应该是 "Driver" 而不是 "Dirver"。

修改后的代码应该是:
  1. Class.forName("com.mysql.jdbc.Driver");
复制代码

然后再次运行你的代码试试看吧!如果还有问题,请确保你的数据库连接URL、用户名和密码正确,并且数据库已经启动。如果仍然无法连接数据库,还可以检查一下是否防火墙或者网络设置导致无法连接。希望能够帮到你!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-15 06:13:02 | 显示全部楼层    本楼为最佳答案   
在代码中,找到以下这行代码:

Class.forName("com.mysql.jdbc.Dirver");

将其中的 "Dirver" 修改为 "Driver",因为驱动类的名称应该是 "Driver" 而不是 "Dirver"。

修改后的代码应该是:
  1. Class.forName("com.mysql.jdbc.Driver");
复制代码

然后再次运行你的代码试试看吧!如果还有问题,请确保你的数据库连接URL、用户名和密码正确,并且数据库已经启动。如果仍然无法连接数据库,还可以检查一下是否防火墙或者网络设置导致无法连接。希望能够帮到你!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-15 06:15:03 | 显示全部楼层
FishC 发表于 2023-12-15 06:13
在代码中,找到以下这行代码:

Class.forName("com.mysql.jdbc.Dirver");

还是不行

出现如下报错

C:\jdk-21.0.1\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2023.2.5\lib\idea_rt.jar=64251:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2023.2.5\bin" -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -classpath C:\Users\mumei\IdeaProjects\jdbc\out\production\jdbc_demo com.itheima.jdbc.JDBCDemo
Exception in thread "main" java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
        at java.base/java.lang.Class.forName0(Native Method)
        at java.base/java.lang.Class.forName(Class.java:421)
        at java.base/java.lang.Class.forName(Class.java:412)
        at com.itheima.jdbc.JDBCDemo.main(JDBCDemo.java:10)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-15 06:15:17 | 显示全部楼层
mumei2018 发表于 2023-12-15 06:15
还是不行

出现如下报错

C:\jdk-21.0.1\bin\jav ...

从报错信息来看,出现了ClassNotFoundException异常,即找不到com.mysql.jdbc.Driver这个类。这通常是因为缺少MySQL的JDBC驱动jar包导致的。可以尝试以下步骤来解决这个问题:

1. 确保你已经下载了MySQL的JDBC驱动jar包。你可以从MySQL官方网站或者Maven仓库中获取。
2. 将下载好的驱动jar包放置在项目的classpath下。可以将该jar包直接拷贝到你的项目目录下,或者使用构建工具如Maven或Gradle来管理依赖。
3. 在你的代码中添加引入驱动包的代码。在main方法之前添加以下代码:
  1. try {
  2.     Class.forName("com.mysql.jdbc.Driver");
  3. } catch (ClassNotFoundException e) {
  4.     e.printStackTrace();
  5. }
复制代码

4. 确保你的类路径设置正确。检查一下IDEA的配置,确保你的项目及其依赖正确地包含在类路径中。

如果你仍然无法解决问题,可以尝试重启IDEA或者重新构建项目并清理一下构建缓存。希望这些步骤能够帮到你!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-15 06:23:47 | 显示全部楼层
FishC 发表于 2023-12-15 06:15
从报错信息来看,出现了ClassNotFoundException异常,即找不到com.mysql.jdbc.Driver这个类。这通常是因 ...

jar包已经成功导入 但依旧无法连接MySQL 报错信息如下

C:\jdk-21.0.1\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2023.2.5\lib\idea_rt.jar=64372:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2023.2.5\bin" -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -classpath C:\Users\mumei\IdeaProjects\jdbc\out\production\jdbc_demo;C:\Users\mumei\IdeaProjects\jdbc\jdbc_demo\lib\mysql-connector-j-8.2.0.jar;D:\A1\java资料\mysql-connector-j-8.2.0\mysql-connector-j-8.2.0.jar com.itheima.jdbc.JDBCDemo
Exception in thread "main" java.lang.ClassNotFoundException: com.mysql.jdbc.cj.Driver
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
        at java.base/java.lang.Class.forName0(Native Method)
        at java.base/java.lang.Class.forName(Class.java:421)
        at java.base/java.lang.Class.forName(Class.java:412)
        at com.itheima.jdbc.JDBCDemo.main(JDBCDemo.java:12)

Process finished with exit code 1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-15 06:23:59 | 显示全部楼层
mumei2018 发表于 2023-12-15 06:23
jar包已经成功导入 但依旧无法连接MySQL 报错信息如下 ...

根据报错信息来看,仍然是ClassNotFoundException异常,说明仍然找不到com.mysql.jdbc.cj.Driver这个类。这可能是因为你使用的MySQL版本较新,而驱动类的名称已经发生了变化。

在MySQL的8.0版本中,驱动类的名称已经改为com.mysql.cj.jdbc.Driver。所以你需要将代码中的驱动类名称修改为com.mysql.cj.jdbc.Driver,修改后的代码如下所示:
  1. import java.sql.Connection;
  2. import java.sql.DriverManager;
  3. import java.sql.SQLException;
  4. import java.sql.Statement;
  5. public class JDBCDemo {
  6.     public static void main(String[] args) throws ClassNotFoundException, SQLException {
  7.         Class.forName("com.mysql.cj.jdbc.Driver");
  8.         String url = "jdbc:mysql://127.0.0.1:3306/db1";
  9.         String username = "root";
  10.         String password = "root";
  11.         Connection conn = DriverManager.getConnection(url, username, password);
  12.         String sql = "update account set money = 2000 where id = 1";
  13.         Statement stmt = conn.createStatement();
  14.         int count = stmt.executeUpdate(sql);
  15.         System.out.println(count);
  16.         stmt.close();
  17.         conn.close();
  18.     }
  19. }
复制代码

请确保你的MySQL版本和驱动版本匹配,并且将驱动jar包导入到项目的classpath中。如果还有问题,请再次检查配置和依赖,并确保数据库已经启动。希望这次能够解决你的问题!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-15 06:25:41 | 显示全部楼层
FishC 发表于 2023-12-15 06:23
根据报错信息来看,仍然是ClassNotFoundException异常,说明仍然找不到com.mysql.jdbc.cj.Driver这个类。 ...

还是不行 这次的报错信息如下

C:\jdk-21.0.1\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2023.2.5\lib\idea_rt.jar=64388:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2023.2.5\bin" -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -classpath C:\Users\mumei\IdeaProjects\jdbc\out\production\jdbc_demo;C:\Users\mumei\IdeaProjects\jdbc\jdbc_demo\lib\mysql-connector-j-8.2.0.jar;D:\A1\java资料\mysql-connector-j-8.2.0\mysql-connector-j-8.2.0.jar com.itheima.jdbc.JDBCDemo
错误: 找不到或无法加载主类 com.itheima.jdbc.JDBCDemo
原因: java.lang.ClassNotFoundException: com.itheima.jdbc.JDBCDemo

Process finished with exit code 1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-15 06:25:57 | 显示全部楼层
mumei2018 发表于 2023-12-15 06:25
还是不行 这次的报错信息如下

C:\jdk-21.0.1\bin\j ...

根据新的报错信息来看,问题出在无法找到或加载主类com.itheima.jdbc.JDBCDemo。这可能是因为项目的运行配置不正确导致的。你可以尝试以下解决方法:

1. 确保你的项目结构正确,包名和类名没有错误。
2. 检查你的项目设置,确保应用程序的启动类是com.itheima.jdbc.JDBCDemo。
3. 确保你的IDE(如IntelliJ IDEA)已经正确设置了项目的classpath,包括所需的jar包。
4. 尝试重新编译和构建项目,确保所有代码和依赖项都被正确处理。

如果还是无法解决问题,请尝试创建一个全新的项目,按照以下步骤操作:

1. 创建一个新的Java项目。
2. 导入所需的mysql-connector-java依赖,确保它在classpath中。
3. 创建com.itheima.jdbc包,并在该包中创建JDBCDemo类。
4. 将你之前尝试过的代码复制到JDBCDemo类中。
5. 运行该类,看看能否成功连接数据库。

如果上述步骤仍然无法解决问题,请再次确认你的MySQL驱动版本和数据库配置是否正确,并且确保你的数据库已经正确启动。另外,也可能是由于操作系统或网络问题导致无法连接到数据库。希望这些方法能够帮助你解决问题!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 16:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表