我必須在我的android應用程序中創建將近5-6個表格。什麼是創建SQLite數據庫和5-6表的最佳地點?我可以在初始活動啓動時編寫所有這些邏輯(使用SQLite開放輔助方法),但是如果我這樣做,它會在每次初始活動啓動時調用。這意味着這些數據庫和表的創建邏輯將在每次啓動應用程序時執行。任何機構都可以告訴我們這樣做的最佳實踐。Android:什麼是創建SQLite數據庫和表格的最佳地點
回答
您可以在主要活動中創建數據庫和表
但是創建數據庫,然後才能檢查
if(exits())
{
// do not create
}
else
{
// create here
}
如果你寫一個類的onCreate方法擴展SQLiteOpenHelper和創建表僅會被執行一次。如果您完全從設備中刪除數據/應用程序,助手將僅重新創建數據。
從developer.android.com:第一次創建數據庫時調用。這是創建表格和表格的初始人口應該發生的地方。
給你更多的信息。 在用於擴展SQLiteOpenHelper的類的構造函數中,調用超級構造函數,它接受一些參數。其中之一是數據庫版本。
如果db_version傳遞給超構造是不同的,那麼最後傳給之一,onUpgrade方法被調用,在onUpgrade()方法,你可以調用的onCreate()
這樣:
- 刪除數據/應用
- 原因onUpgrade被稱爲它調用的onCreate()
是創建/更新方式/刪除數據庫
Personnaly,我使用選項:CREATE TABLE IF NOT EXISTS
。
所以日開放幫手有這個PARAM:
private static final int VERSION_BDD = 1;
我覺得openHelper不會在每次啓動時重新創建每個表。
您可以使用一個內部類extendings的SQLiteOpenHelper和覆蓋的方法公共無效的onCreate(SqLiteDatabase sqlLiteDatabase)和公共無效onUpgrade(SQLiteDatabase sqLiteDatabase,INT oldVersion,INT NEWVERSION)
的的onCreate當沒有數據庫中存在被稱爲在磁盤和助手類需要創建一個新的
當db版本不匹配時調用onUpgrade。 DB的磁盤上的版本需要升級到NEWVERSION
private static final class PatientDatabaseHelper extends SQLiteOpenHelper {
private static final String TAG = "PatientProvider";
private static final String DATABASE_NAME = "myPatient.db";
private static final int DATABASE_VERSION = 1;
private static final String PATIENT_TABLE = "PATIENT";
private static final String CREATE_TABLE_PATIENT =
"create table " + PATIENT_TABLE + " ("
+ PATIENT_KEY_ID + " integer primary key autoincrement, "
+ PATIENT_NAME + " TEXT NOT NULL, "
+ PATIENT_FIRST_NAME + " TEXT NOT NULL, "
+ PATIENT_TEL + " TEXT, "
+ PATIENT_GSM1 + " TEXT, "
+ PATIENT_GSM2 + " TEXT, "
+ PATIENT_BIRTHDATE + " DATE); ";
public PatientDatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
sqLiteDatabase.execSQL(CREATE_TABLE_PATIENT);
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int oldVersion, int newVersion) {
Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
+ newVersion + ", which will destroy all old data");
//simple case sample - droppin the table
sqLiteDatabase.execSQL("DROP TABLE IF IT EXISTS " + PATIENT_TABLE);
//Create a new One
onCreate(sqLiteDatabase);
}
}
的Android的目標版本取決於但我認爲一個好的方法是與ContentProvider的使用http://developer.android.com/guide/topics/providers/content-provider-creating.html
- 1. Android SQLite:創建數據庫副本的最佳方法是什麼
- 2. 什麼是Android的最佳數據庫?
- 3. 在Android中覆蓋SQLite數據庫表的最佳方法是什麼?
- 4. 什麼是使用鈦創建數據庫的最佳方式
- 5. Sqlite數據庫創建,最佳實踐Android
- 6. Android創建SQLite數據庫並插入行 - 最佳實踐?
- 7. 連接android和oracle數據庫的最佳方式是什麼?
- 8. SQLite數據庫的Android創建表
- 9. 處理SQLite數據庫的最佳方式是什麼?
- 10. SQlite數據庫文件的最佳擴展名是什麼?
- 11. 什麼是創建和維護電影數據庫的最佳方式?
- 12. 什麼是從網格行創建列表的最佳方式
- 13. 什麼是構建數據庫的最佳構建系統?
- 14. 構建我的android Sqlite流程的最佳方式是什麼?
- 15. 連接和使用C#中的sqlite數據庫的最佳方式是什麼?
- 16. 什麼是表的最佳數據量?
- 17. 什麼是存儲我的數據的最佳地點?
- 18. 在android上的sqlite數據庫中創建表格
- 19. 無法在android上的sqlite數據庫中創建表格
- 20. 創建SQLite數據庫和表
- 21. SQLite:我創建的數據庫的路徑是什麼?
- 22. 建立我的數據庫的最佳方式是什麼
- 23. 什麼是在android上創建新數據庫之前檢查現有數據庫的最佳方法
- 24. 什麼是數據庫開發的最佳方法Android
- 25. 在Android庫中創建SQLite數據庫
- 26. Android SQLite數據庫:麻煩創建表格並插入
- 27. 在Rails中建立數據庫的最佳方式是什麼?
- 28. 爲什麼自己創建SQLite數據庫rowid? Android
- 29. 創建大量虛擬數據的最佳方式是什麼?
- 30. 什麼是創建SQL Server數據庫的工作副本的最佳方式?