2014-01-14 82 views
1

我有一個現有的數據庫與一些數據(類似於dictonary),我想把它放在安裝apk包,我會解釋 - 我只是想在應用程序時使用我現有的數據庫已安裝。其中一個最好的方式做到這一點?:包括apk中的現有數據庫

  1. 將數據庫在res /生/然後將其複製SD卡上的應用程序時,首先啓動。

  2. 創建一個sql腳本,它將創建一個數據庫結構並填充數據並在db-helper類中執行它。我認爲這是非常糟糕的想法,因爲我有大約100萬條來自所有表格的記錄,並且很難與該腳本一起工作。

  3. 在此post

任何其他人使用靜態非寫入數據庫是怎樣的?

+0

將數據庫放在資產文件夾,雖然你可能不會執行寫入操作,並且你會將數據庫複製到SD卡(這是昂貴的)或內存 –

+0

@TheUnknown請發表您的評論作爲回答我可以接受它是最好的。 – whizzzkey

回答

0

@Whizzzkey按您的要求在這裏就是答案:)

將數據庫放置在資產文件夾中,儘管您可能不會執行寫入操作,並且您需要將數據庫複製到sdcard(價格昂貴)或內存

快樂編碼。

2

我建議你使用SQLiteAssetHelper庫(https://github.com/jgilfelt/android-sqlite-asset-helper)。它是一個Android助手類,用於使用應用程序的原始資產文件來管理數據庫創建和版本管理。

此類爲開發人員提供了一種簡單的方式,可以將其應用程序與現有SQLite數據庫(可能預先填充數據)一起運輸,並管理其初始創建和隨後版本發佈所需的任何升級。

預加載的sqlite數據庫將存儲在資源文件夾中的壓縮文件中,並且SQLiteAssetHelper .jar庫將存儲在lib文件夾中,請確保將其添加到構建路徑中。 然後你可以創建一個類與folllowing: 加載的歌曲標題和標題的預加載數據庫中的樣本類:

import com.readystatesoftware.sqliteasset.SQLiteAssetHelper; 
    public class DatabaseManager { 
所有變量和常數的

// DECLATION將使用創建表

private static final String DATABASE_NAME = "SongDatabase"; 
private static final String DATABASE_TABLE = "Song"; 
所需的所有柱

//聲明要創建

public static final String KEY_ROWID = "_id"; 
public static final String KEY_AUTHOR = "author"; 
public static final String KEY_TITLE = "title"; 

private DatabaseHelper mDbHelper; 
private SQLiteDatabase ourDatabase; 
private final Context ourContext; 

    public class DatabaseHelper extends SQLiteAssetHelper {  
    public DatabaseHelper(Context context) { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
     } 

public DatabaseManager(Context context){ 
    ourContext = context;  
} 

// open the database for access 

public DatabaseManager open() throws SQLException { 
    mDbHelper = new DatabaseHelper(ourContext); 
    ourDatabase = mDbHelper.getWritableDatabase(); 
    return this; 
    } 
// Enter Values into the database or create database values 

public long createRecords(String author, String title) { 

    ContentValues initialValues = new ContentValues(); 
    initialValues.put(KEY_AUTHOR, author); 
    initialValues.put(KEY_TITLE, title); 
    return ourDatabase.insert(DATABASE_TABLE, null, initialValues); 

} 
// close the database after creating the values for security purposes 
public void close() { 
    mDbHelper.close(); 
    } 
}