这是我的第一篇文章,所以如果我弄错了,我道歉!
我在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)
我花了很多时间在互联网上寻求如何解决这个问题的帮助,但到目前为止我还没有成功。
非常感谢任何帮助。
谢谢!
答案 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