MySQL非注册驱动程序

时间:2015-07-09 11:30:50

标签: java mysql eclipse jdbc

这是我的第一篇文章,所以如果我弄错了,我道歉!

我在Eclipse中使用Java在MySQL数据库中创建表。一切都很好,直到前几天莫名其妙地停止工作。我的代码运行但由于我尝试初始化连接时出错,数据库没有任何反应。代码实际上运行到最后,只有在我单步执行代码时才能查看错误。

这是我的TableCreator类的构造函数:

public TableCreator() throws SQLException {
        host = "jdbc:mysql://localhost:3306/test";
        dbName = "root";
        dbPass = "pass";
        conn = DriverManager.getConnection(host, dbName, dbPass);
        query = conn.createStatement();
        initialise();
        System.out.println("Success.");
    }

错误发生在'conn = DriverManager.getConnection(host,dbName,dbPass);'行上。

在我尝试执行此行之后,堆栈看起来像这样:

TableCreator (1) [Java Application] 
    biz.cogitare.gpsperformancetool.TableCreator at localhost:53389 
        Thread [main] (Suspended)   
            Driver(NonRegisteringDriver).connect(String, Properties) line: 306  
            DriverManager.getConnection(String, Properties, Class<?>) line: not available   
            DriverManager.getConnection(String, String, String) line: not available 
            TableCreator.<init>() line: 23  
            TableCreator.main(String[]) line: 49    
        Daemon Thread [Abandoned connection cleanup thread] (Running)   
    C:\Program Files\Java\jre1.8.0_45\bin\javaw.exe (9 Jul 2015 12:27:27)

我花了很多时间在互联网上寻求如何解决这个问题的帮助,但到目前为止我还没有成功。

非常感谢任何帮助。

谢谢!

2 个答案:

答案 0 :(得分:1)

有几件事可能导致这种行为。

检查驱动程序是否已加载。

如果您的JDBC驱动程序早于4.0,则需要确保驱动程序已加载

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

或类似字符串,具体取决于您使用的特定驱动程序。

也许你正在执行另一个在执行此代码之前加载驱动程序的操作,这就是它确实有效的原因。也许你没有做那个操作,这就是为什么这个代码尽管是相同的代码而失败的原因。

检查驱动程序文件是否在类路径中。

如果你得到ClassNotFoundException,则意味着JVM无法找到你的类。如果您收到LinkageError,则表示存在版本冲突。获取最新的驱动程序并重新安装。

检查驱动程序是否已在eclipse中正确导入。

按照此说明导入它:How to import a jar in Eclipse

如果一切都失败了,请重新安装。

卸载java,删除eclipse,重新安装所有内容。

以正确的方式插入驱动程序并启动一个新项目并复制您的课程。

答案 1 :(得分:0)

如果要将项目导出为runnable jar,请确保导出mysql driver.jar
以及如果您需要添加以上所有答案 在Class.forName("com.mysql.jdbc.Driver");

之前conn = DriverManager.getConnection(host, dbName, dbPass);

如果无效,请与我们分享stacktrace