【问题标题】:Java connecting to mySQL [duplicate]Java连接到mySQL [重复]
【发布时间】:2018-11-09 21:10:22
【问题描述】:

你好,我在我的 mac 上运行了 mysql,我正在尝试编写一个 java 脚本来连接它:

private static final String USERNAME = "root";
private static final String PASSWORD = "password";
private static final String CONN_STRING = "jdbc:mysql://local:3306/test";

public static void main(String[] args) {
    Connection conn = null;

    try {
        conn = DriverManager.getConnection(CONN_STRING,USERNAME,PASSWORD);
        System.out.println("Connected");
    }catch (SQLException e){
    System.err.println(e);
    }
}

但我不断收到此错误消息

java.sql.SQLException: 找不到适合 jdbc:mysql://local:3306/test 的驱动程序

我做错了什么?

【问题讨论】:

  • 您的运行时类路径中没有 mysql connector/j (jdbc) 驱动程序。另外,它是localhost(不是local)。
  • 我已将本地更改为 localhost 但是我认为您不必在“/Users/Username/mysql-connector-java-8.0.11 2/mysql-connector-java”上添加驱动程序-8.0.11.jar" java 8.0 连接器(我已经导入了)
  • 也添加这个Class.forName("com.mysql.jdbc.Driver");
  • 我一直在网上看到这个,我以为我是用于旧版本的连接器。
  • 但是当我添加它时,我在线程“main”中得到异常 java.lang.RuntimeException: Uncompilable source code - unreported exception java.lang.ClassNotFoundException;必须在 testforairbus.TestFortest.main(TestForTest.java:22) 捕获或声明抛出 Java 结果:1

标签: java mysql jdbc


【解决方案1】:

首先你必须将 Mysql jdbc 驱动程序添加为外部库。您可以从here 找到jar 文件。这个link 指导如何在netbeans 中添加库。其他的是local必须是localhost

private static final String USERNAME = "root";
private static final String PASSWORD = "password";
private static final String CONN_STRING = "jdbc:mysql://localhost:3306/test";

public static void main(String[] args) {
    Connection conn = null;
    try {
        Class.forName("com.mysql.jdbc.Driver");
        conn = DriverManager.getConnection(CONN_STRING,USERNAME,PASSWORD);
        System.out.println("Connected");
    }catch (SQLException e){
    System.err.println(e);
    }
}

【讨论】:

  • 我已经完成了将 mysql-connector-java-8.0.11 添加为库的所有工作,并且我在代码的开头将其导入,但是当 class.forName 总是出现错误时
  • java.lang.RuntimeException: 无法编译的源代码 - 未报告的异常 java.lang.ClassNotFoundException;必须在 testforairbus.TestFortest.main(TestForTest.java:22) 被捕获或声明被抛出,准确地说是这个
  • 我认为您添加了错误的库。您是否参考了我在 mysql 连接器 jar 文件的答案中给出的链接。原始mysql连接器的最新版本是5.1.46
  • 哇,它与您的版本一起工作,这是一个问题吗?警告:不建议在没有服务器身份验证的情况下建立 SSL 连接。根据 MySQL 5.5.45+、5.6.26+ 和 5.7.6+ 的要求,如果未设置显式选项,则默认情况下必须建立 SSL 连接。为了符合不使用 SSL 的现有应用程序,verifyServerCertificate 属性设置为“false”。
  • 它适用于旧版本非常感谢您的宝贵时间
【解决方案2】:

在类路径中有驱动程序后,您需要在连接之前添加以下行,并将 CONN_STRING 中的本地更改为 localhost:

DriverManager.registerDriver(new com.mysql.jdbc.Driver());

类似这样的:

try {
        DriverManager.registerDriver(new com.mysql.jdbc.Driver ());
        conn = DriverManager.getConnection(CONN_STRING,USERNAME,PASSWORD);
        System.out.println("Connected");
    }catch (SQLException e){
    System.err.println(e);
    }

【讨论】:

  • 尝试这只会导致线程“main”java.lang.UnsupportedClassVersionError: com/mysql/jdbc/Driver 中出现更多errorsException:java.lang.ClassLoader.defineClass1 中不支持major.minor 版本52.0(本机Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:800) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) .........
  • 你的 Java 版本是多少?
  • 我使用 jdk 8、netbeans 8.0.2 和 mysql 连接器 8.0.11
  • 只需仔细检查您的 JDK 和 JRE 是否为相同版本,然后尝试使用版本 5 系列的 MySQL 连接器运行代码。
  • 它适用于旧版本我仍然不明白为什么但非常感谢你
猜你喜欢
  • 2012-12-15
  • 2012-10-20
  • 1970-01-01
  • 2011-05-30
  • 2016-09-02
  • 2014-09-18
  • 2018-09-10
  • 2020-12-01
相关资源
最近更新 更多