4

jdbc、SQLite、および Java で奇妙なエラーが発生しますDriveManager対応するJava docsによると、DriveManagerjdbc が提供されている限り、必要なドライバーを自分でロードできます。ただし、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()ます。いくつかの助けをいただければ幸いです。

4

1 に答える 1

3

jdbc ドライバーの実装方法によって異なります。「昔の」時代にはClass.forNames()、ドライバーをロードする前に常に呼び出しが必要でした。jdbc ServiceLoader サポートを使用して実装された「最新の」ドライバーは、これを必要としなくなりました。基本的には、ドライバー jar に適切な "META-INF/services/java.sql.Driver" エントリがあるかどうかにかかっています。

これらはすべて、DriverManagerの javadoc で説明されています。

于 2012-11-30T01:13:54.633 に答える