SQLNonTransientConnectionException在Eclipse中与MySQL连接

时间:2018-07-23 17:33:19

标签: java mysql eclipse jdbc classnotfoundexception

我正在尝试编写代码,以使用Eclipse,MySQL Workbench和JDBC 8.0.11将文本文件的数据导入数据库。它给了我ClassNotFoundException。我研究了多个其他问题,并将java \ com \ mysql \ jdbc \ Driver.java放入DriverManager.getConnection参数中,即可解决所有问题。我已经做到了,但仍然给我一个错误。任何人对我为什么仍然会收到此错误有任何想法?

public static void main(String[] args) throws Exception{
    Class.forName                                                                   //Register JDBC Driver
    ("*mysql-connector-java-8.0.11.\\src\\legacy\\java\\com\\mysql\\jdbc\\Driver.java*")
    .newInstance();  

    conn =      DriverManager.getConnection (url, user, pass);   
    Statement stmt = conn.createStatement();
    String mysql1 = "UPDATE Policy SET " + readAndArray                         //Changeable file path
            ("filepath"); 

    }

新编辑

按照@zlakad的建议,事实证明,如果您具有Java 6或更高版本,则无需使用Class.forName()。虽然,现在我有了一个新错误:SQLNonTransientConnectionException,因为存在基础WrongArgumentException。我不知道为什么要这样做,因为我没有为DriverManager.getConnection使用不正确的参数。有什么建议吗?

String url = "file path";         //Changeable for MySQL DB
String user = "root";
String pass = "password";

public static void getConnection() throws Exception { 

    Connection conn = DriverManager.getConnection(url, user, pass);   
    Statement stmt = conn.createStatement();

3 个答案:

答案 0 :(得分:1)

您必须加载用于连接的驱动程序类,而不是该类的jar文件

您应该尝试以下方法:

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

答案 1 :(得分:1)

尝试一下:

// None of this belongs in a main method. 
public static void main(String[] args) throws Exception {
    Class.forName("com.mysql.jdbc.Driver");     
    // where are url, user, pass set?  I don't see them.   
    Connection conn = DriverManager.getConnection(url, user, pass);
    Statement stmt = conn.createStatement();
    // this is simply wrong.
    String mysql1 = "UPDATE Policy SET " + readAndArray("filepath");
}

您是Java和JDBC的新手。这不是一个好方法。我建议您在网络上搜索SO的一些示例,以了解如何做得更好。

答案 2 :(得分:0)

我在DriverManager.getConnection()中使用了错误的数据库URL格式;

我将网址更改为jdbc:mysql:// host :3306 /,并且可以正常工作。

String url = "jdbc:mysql://*host*:3306/";
Connection conn = DriverManager.getConnection(url, user, pass);