2013-03-19 70 views
3

我有以下問題讓我一段時間都很忙。
我在Netbeans中構建了一個Java項目,我有一個嵌入式的sqlite數據庫,我在這個項目中使用。
當前數據庫位於包src/release/中。將嵌入式sqlite-db添加到Netbeans項目

我引用數據庫從代碼的方式如下:

c = DriverManager.getConnection("jdbc:sqlite:src/release/db.db3");

當我從NetBeans中運行該項目,它的工作沒有任何問題。但是當我嘗試構建它並運行創建的jar文件(在dist文件夾中)時。

我收到以下錯誤信息(來自荷蘭的介紹翻譯):

開放連接失敗:路徑 SCR /發行/ db.db3:「C:\用戶\ idxxxxx \文件\\ DIST \ SRC」 不存在

當這樣的代碼引用DB:
c = driverManager.getConnection("jdbc:sqlite:db.db3");
和在罐子添加分貝文件到輸出目錄的根(因此不本身),應用程序部分工作,但我的應用程序中缺少一些db數據(空組合框)。
所以似乎也有一個問題。

我的問題是:

  • 我如何添加一個嵌入式數據庫 - 源碼在這種情況下 - 在NetBeans中我的項目,所以這將是我的項目的一部分嗎?
  • 我應該在哪裏放置db文件,以及如何從項目代碼中引用它?

我不想讓終端用戶看到任何數據庫文件的文件他(她)將獲得英寸
因此,如果可能的話,我想將db文件作爲.jar的一部分。

TNX

+0

我想你可能已經搞砸了一些地方的src/SCR。看看這樣的錯誤 - src/release/db.db3和失敗:scr/release/db.db3的路徑; – hovanessyan

回答

2

SQLite的需要單獨的文件,甚至無需更新數據庫。

需要確保鎖定並確保數據庫ACID屬性。

SQLite from inside .jar

  • SQLite是採用直接文件訪問工作。
  • SQLite可能需要其他特權,在某些環境中不可用。

在開始時,SQLite數據文件可以從JAR中提取到臨時位置。

將數據庫url直接寫入程序並不是一個好的選擇。

getConnection("jdbc:sqlite:src/release/db.db3");

讓您的應用程序查找文件。如果找不到:error: File db.db3 not found消息。然後知道用戶,不是程序出錯了,而是缺少數據庫文件。

由於您使用的是java,所以很容易創建動態url。
例如"jdbc:sqlite:"+PathToApp +"/data/db.db3"
然後,應用程序知道在哪裏複製提取的文件(來自jar的db.db3)。從的.jar

  • 你可以讓Java的做你

    提取物SQlite的。

  • 使用jdbc:sqlite::resource:
  • 您需要的sqlite的-JDBC JAR,所以提取JAR文件,並添加到應用程序JAR。

DB文件將被提取到臨時文件夾System.getProperty(「java.io.tmpdir」)

例如

[...] 
import org.sql.*; 
import org.sqlite.*; 
[...] 
try { 
    Class.forName("org.sqlite.JDBC"); 
    SQLiteConfig config = new SQLiteConfig(); 
    config.enableFullSync(true); 
    config.setReadOnly(false); 
    SQLiteDataSource ds = new SQLiteDataSource(config); 
    ds.setUrl("jdbc:sqlite::resource:"+ 
       getClass().getResource("db.db3").toString()); 
    conn = ds.getConnection(); 
}catch(SQLException se) 
{ 
    System.out.println("SQLError: "..."); 
} 

更新倍頻程2014

org.sqlite SQLiteConfig + SQLiteDataSource

2014 October 8th: sqlite-jdbc-3.8.6.jar Updated to sqlite 3.8.6

+0

SQLiteConfig和SQLiteDataSource是在類或用戶定義的類中構建的。請建議.. – Kogile

+0

@Kogile:看看我的更新。 –

+0

好吧..如何將這些文件包含到我的項目中。或者那些文件需要任何庫被導入..請幫助我。 – Kogile

相關問題