JDBC + SQLite:DriveManager不加载所需的驱动程序

时间:2012-11-30 00:46:54

标签: java sqlite jdbc

我在jdbc,SQLite和java的DriveManager中遇到了一些奇怪的错误。根据相应的java docsDriveManager能够自己加载所需的驱动程序,只要提供jdbc即可。但是,对我来说,这在使用SQLite时不起作用:

Connection conn = DriverManager.getConnection("jdbc:sqlite://" + pathToFile + File.separator + "database.db");

执行此代码时,我得到一个SQLException:No suitable driver found for jdbc:sqlite:pathToFile\database.db通常我会认为jdbc不应该是,但是,由于某种原因,以下工作:

Class.forName("org.sqlite.JDBC");
Connection conn = DriverManager.getConnection("jdbc:sqlite://" + pathToFile + File.separator + "database.db");

这让我完全不知道为什么第一个版本不起作用。作为旁注,MySQL遵循相同的实现工作正常,而不使用Class.forName()。一些帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

这取决于jdbc驱动程序的实现方式。在“旧”日期,您在加载驱动程序之前始终需要Class.forNames()调用。使用jdbc ServiceLoader支持实现的“现代”驱动程序不再需要这个。基本上它归结为驱动程序jar是否具有相应的“META-INF / services / java.sql.Driver”条目。

所有这些都包含在DriverManager javadocs中。