如何解决这个Java Jdbc连接错误?

问题描述 投票:1回答:1

我已经写了一个简单的Java Jdbc连接程序。我已经把MySQL连接器的jar.我也把classpath放在环境变量中。我也把classpath的环境变量。仍然无法解决这个连接错误。

这是我的代码。

public class check {

    public static void main(String[] args) {

        System.out.println("-------- MySQL JDBC Connection Demo ------------");
        try
        {
            Class.forName("com.mysql.cj.jdbc.Driver");
        } 
        catch (ClassNotFoundException e) {
            System.out.println("MySQL JDBC Driver not found !!");
            return;
        }
        System.out.println("MySQL JDBC Driver Registered!");
        Connection connection = null;
        try {
            connection = DriverManager
                .getConnection("jdbc:mysql://localhost:3306/company","root","");
            System.out.println("SQL Connection to database established!");

        } catch (SQLException e) {
            System.out.println("Connection Failed! Check output console");
            return;
        } finally {
            try
            {
                if(connection != null)
                    connection.close();
                System.out.println("Connection closed !!");
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

输出:

-------- MySQL JDBC Connection Demo ----------
MySQL JDBC Driver Registered!
Connection Failed! Check output console
Connection closed !!
java mysql jdbc runtime-error database-connection
1个回答
3
投票

替换以下几行

} catch (SQLException e) {
    System.out.println("Connection Failed! Check output console");
    return;
}

} catch (SQLException e) {
    System.out.println("Connection Failed! Check output console");
    e.printStackTrace();
}

以便你能得到问题的根本原因。你现在的代码只是在吃这些重要信息。

另外,请删除以下残余的代码。

try
{
    Class.forName("com.mysql.cj.jdbc.Driver");
} 
catch (ClassNotFoundException e) {
    System.out.println("MySQL JDBC Driver not found !!");
    return;
}

Class.forName("com.mysql.cj.jdbc.Driver") 从JDBC 4. 0开始就不需要了。


2
投票

异常包含有用的信息。通过捕获它们并打印'error!',你正在消除这些信息。

这不是你处理异常的方式。这里的规则是:记录它显示错误不是处理它。所以,不要这样做。

只要在你的主方法上声明 "throws Exception",然后删除所有trycatch的东西。这样代码的可读性会提高很多,而且现在你可以看到错误的全部细节。

如果你一定要捕获这些异常,当你不知道该怎么做的时候,正确的捕获块代码是。throw new RuntimeException("Unhandled exception", e); - 这仍然能保证你看到所有的错误信息和其他细节。

一旦你这样做,错误信息就会告诉你发生了什么问题。


0
投票

对于这个特殊的Exception,你得到的原因只有几个,如果你已经成功安装了MySql。(Class.forName("com.mysql.cj.jdbc.Driver") 将不会对你的代码产生任何影响)这个原因是--。

  1. 你还没有建立数据库 company在您的MySql数据库中不存在。
  2. MySql客户端的用户名无效。
  3. 用户的密码 root 是不正确的(您没有提供)
  4. MySql服务器在你的系统中没有被启动来连接客户端(在登录前启动它),对于Windows,你可以运行这个文件。\MySQL\MySQL Server 8.0\bin\mysqld.exe 为了启动它。

请检查所有这些可能性。

我已经用我的数据库试过你的代码,工作正常,只是检查一下可能的原因。


0
投票

我知道了.我的wamp Mysql服务器的url是localhost:3308.但我在程序中写了3306......终于解决了......谢谢大家的帮助。

© www.soinside.com 2019 - 2024. All rights reserved.