8

私はJAVA(Eclipse junoを使用)を使用しており、sqliteDBファイルを含む実行可能JARファイルを作成しようとしています。私はこの行でDBへの接続を取得しようとしました:

DriverManager.getConnection("jdbc:sqlite:"+DataController.class.getResource("test.sqlite").getPath())

DataControllerは、sqliteが配置された場所に配置されたクラスです。

そして私はエラーを受け取り続けます:

java.sql.SQLException: invalid database address

誰かが実行可能JARファイル内にsqliteDBを含める方法について、手順を追って説明することができますか?

4

4 に答える 4

15

どうやらsqlite-jdbcはそれ自体でリソースを開くことができます。このスレッドhttps://groups.google.com/forum/?fromgroups=#!topic/xerial/Oayzj5nrJGkごとに、パスに:resourceを追加します。したがって、次のことを試してください。

DriverManager.getConnection("jdbc:sqlite::resource:package/test.sqlite"); 

またはsqliteのバージョンによって異なります

DriverManager.getConnection("jdbc:sqlite::resource:package/test.db"); 

パッケージを、このファイルが含まれているパッケージへの「/」で区切られたパスに置き換えます。

実際にファイルをtmpディレクトリにコピーすることに注意してください。-

于 2013-03-03T15:26:40.863 に答える
2

道は::resource正しい。そして、これらの説明は、verdana::resourceのようなエラーを使用しているが、それでもエラーが発生する場合に役立ちます。resource database.db not found: java.net.MalformedURLException: no protocol: database.db

最も一般的な回答は次のとおりです。 DriverManager.getConnection("jdbc:sqlite::resource:path/to/database.db")

ただし、jarファイルへpath/to/database.dbの正確なパス(JarではなくReal File Systemのパス)である必要があります。

私は使用することをお勧めしますgetClass().getResource()

DriverManager.getConnection("jdbc:sqlite::resource:" + 
        getClass().getResource("/path/to/db/in/the/jar/file"))

/path/to/db/in/the/jar/fileパーツはで始まる必要があります/

于 2016-04-14T13:46:01.727 に答える
0

これが最近のJDBCバージョンで変更されたかどうかはわかりませんが、約1時間いじってさまざまな例外(MalformedURLExceptionと「データベースが閉じられました」)を取得した後、次のことがうまくいきました。

DriverManager.getConnection("jdbc:sqlite::resource:file:/path/to/database.db")

:file:の部分は他の回答から欠落しているようで、それなしでは機能させることができませんでした。

また、

/path/to/database.db

通常のリソースルートではなく、.jarファイルのルートから始まる絶対パスです。

于 2017-06-09T15:58:54.580 に答える
0
jdbc:sqlite::resource:notes_app.db

私のために働いた。私のデータベース(notes_app.db)は、生成されたjarファイルのルートにありました。

public class Database {
    public static Connection con () throws SQLException {
        String url = "jdbc:sqlite::resource:notes_app.db";
        return DriverManager.getConnection(url);
    }
}

私のnotes_app.dbは、生成されたjarのルートにあります。私はMavennotepadd++で開発しています

于 2018-09-19T19:47:39.983 に答える