我正在開發一個Android應用程序,該應用程序需要在用戶可以使用該應用程序之前在該應用程序的數據庫中填充多個條目(一個表格,包含1000-10000行)。我瀏覽過一些教程,並且我不確定這樣做的最佳方式。我應該在每次啓動應用程序時檢查數據庫是否存在,如果不存在,創建它並插入我需要的數千條記錄?還是有更好的方法來處理這個問題?理想情況下,它可以作爲應用程序安裝過程的一部分,但我不確定這是否可行。任何反饋將不勝感激。Android預填充數據庫
回答
這個環節有很好的答案Ship an application with a database
以下是在提及的SO問題Andrey中作爲答案呈現的鏈接。這是一篇關於使用Android應用程序發佈預建數據庫的非常棒的文章: http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/ – 2010-03-09 18:43:03
類似但很簡單:http://www.helloandroid.com/tutorials/how-have-default-database – 2012-04-02 11:16:46
http:// stackoverflow。com/questions/9109438/using-already-created-database-with-android/9109728#9109728 – 2012-07-26 22:42:30
我要去這裏的方式是將資源文件夾中預先填充的數據庫。您可以將文件放在那裏並按原樣使用它們。但是,請注意,存在1MB的大小限制,因此您可能需要分割文件或對其進行壓縮。
壓縮非常方便,並由os本身支持。
希望這是有幫助:-)
大小限制爲1 MB。 – 2014-06-30 15:24:51
的JavaDoc從SQLiteOpenHelper:
一個輔助類來管理數據庫 創作和版本管理。您 創建實施 的onCreate(SQLiteDatabase)的子類, onUpgrade(SQLiteDatabase,INT,INT) 和可選的OnOpen(SQLiteDatabase), 這個類需要開放 如果存在數據庫的護理,創建它 如果它不不,並且將其升級爲 必要。事務用於 確保數據庫始終處於 明智狀態。
有關示例,請參閱NotePad 示例應用程序中SDK的示例/ 目錄中的 NotePadProvider類。
所以,如果你擴展這個類,你有3種方法將在某些情況下被調用,你可以選擇,做什麼。 那是最好的做法:)
下面是如何創建和填充數據庫的例子,你可以做到這一點的應用程序安裝,這將創建一個條目,雖然因此對於您想要做的事情可能效率低下。
private static class settingsDatabaseHelper extends SQLiteOpenHelper{
//SQL String for creating the table required
private static final String CREATE_SETTINGS_TABLE
= "CREATE TABLE tbl_settings(" +
"_ID INTEGER PRIMARY KEY AUTOINCREMENT," +
"VOIPUSERNAME TEXT," +
"VOIPAUTHID TEXT," +
"PASSWORD TEXT," +
"VOIPDISPLAYNAME TEXT," +
"SIPPROXYSERVER TEXT," +
"SIPREGISTRAR TEXT," +
"SIPREALM TEXT," +
"EXPIRESTIME INTEGER);";
//constructor
public settingsDatabaseHelper(Context context, String name,
CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_SETTINGS_TABLE);
ContentValues initialValues = new ContentValues();
initialValues.put("VOIPUSERNAME", "xxxxx");
initialValues.put("VOIPAUTHID", "xxxxxxxxxx");
initialValues.put("PASSWORD", "xxxxxx");
initialValues.put("VOIPDISPLAYNAME", "xxxxxxxxx");
initialValues.put("SIPPROXYSERVER", "xxxxxxxxxxxxx");
initialValues.put("SIPREGISTRAR", "xxxxxxxxxxx");
initialValues.put("SIPREALM", "xxxxxxxxxx");
initialValues.put("EXPIRESTIME", xxxxxxxxxxx);
Log.d("1.6", "gets to here");
db.insert(SETTINGS_TABLE, null, initialValues);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w(TAG, "Upgrading database from version " + oldVersion + " to " +
newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS " + SETTINGS_TABLE);
onCreate(db);
}
}
//end helper class
}
請解釋一下投票嗎? – 2012-01-04 13:20:45
如何在應用程序安裝上執行此操作?這部分代碼是否僅在安裝時執行? – 2017-10-01 12:15:22
- 1. Coredata數據庫預填充未填充
- 2. Android中的預填充數據庫
- 3. 預填充數據庫
- 4. 填充Android SQLite數據庫
- 5. Android - 預填充數據庫,插入還是預加載?
- 6. 預填充離子數據庫2
- 7. 刪除預填充的數據庫
- 8. 預先填充的Sqlite數據庫
- 9. 預填充工具SQL CE數據庫
- 10. 如何預先填充sqlite數據庫?
- 11. 領域預填充數據庫
- 12. 使用SQL數據庫預填充InfoPath
- 13. 在SQLite數據庫上使用預填充的數據庫Android Studio
- 14. 用數據預填充UITextView?
- 15. android預填充數據庫程序中的nullPointerException
- 16. 在phonegap中使用預填充的sqlite數據庫android
- 17. 預填充數據庫 - Android應用程序
- 18. Android - 填充ListView使用預加載的數據庫
- 19. Android |預先填充的數據庫路徑
- 20. 在Android中重置預先填充的sqlite數據庫
- 21. PhoneGap + android,預填充數據庫不工作。
- 22. 在Android中更新預填充的數據庫
- 23. Android ORMLite,使用預先填充的數據庫並使用它
- 24. Android Studio將數據庫填充到RecyclerVIew
- 25. Android SQLite數據庫沒有填充
- 26. Android:從數據庫填充ListView
- 27. 的Android的LinearLayout填充從數據庫
- 28. 自動填充數據庫。(Android /新手)
- 29. 從CSV文件填充Android數據庫?
- 30. Android - 填充ListActivity數據庫搜索 - HowTo?
http://stackoverflow.com/a/9109728/265167 – 2012-02-15 11:00:58
我不想張貼此作爲一個答案,因爲它不是真的。考慮編寫Java以在Android_上構建數據庫(例如,使用ADB推送的CSV文件)。然後將其壓縮到'/ assets'進行安裝。試圖完全匹配Android在非Android環境中所期望的結果是我成爲一個脆弱的構建步驟。 – Gene 2012-06-06 22:11:24
@ JonDiY212鏈接中的HTML錯誤。 – Noumenon 2013-05-14 16:56:46