我在使用 jdbc、SQLite 和 java 时遇到一些奇怪的错误DriveManager。根据相应的java docs,DriveManager只要提供了jdbc,就可以自己加载需要的驱动。然而,对我来说,使用 SQLite 时这不起作用:
Connection conn = DriverManager.getConnection("jdbc:sqlite://" + pathToFile + File.separator + "database.db");
Run Code Online (Sandbox Code Playgroud)
执行此代码时,我得到一个 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");
Run Code Online (Sandbox Code Playgroud)
这让我完全不明白为什么第一个版本不起作用。附带说明一下,MySQL 遵循相同的实现,无需使用Class.forName()也可以正常工作。一些帮助将不胜感激。
这取决于jdbc驱动程序是如何实现的。在“旧”时代,您总是需要Class.forNames()在加载驱动程序之前进行调用。使用 jdbc ServiceLoader 支持实现的“现代”驱动程序不再需要此功能。基本上,这取决于驱动程序 jar 是否具有适当的“META-INF/services/java.sql.Driver”条目。
所有这些都包含在DriverManager javadocs 中。
| 归档时间: |
|
| 查看次数: |
4721 次 |
| 最近记录: |