我已經構建了一個android應用程序,我從主要活動的onCreate()
方法調用方法insertSampleData()
。在Android中將示例數據的代碼放在哪裏?
問題是,onCreate()
方法被稱爲每次啓動應用程序, 這導致填充我的數據庫大量的示例數據。
我想在安裝應用程序時僅提供一次示例數據。任何人都可以請告訴我該怎麼做?非常感謝 !
P.S:方法insertSampleData()
用於將樣本數據插入Sq-lite數據庫。
我已經構建了一個android應用程序,我從主要活動的onCreate()
方法調用方法insertSampleData()
。在Android中將示例數據的代碼放在哪裏?
問題是,onCreate()
方法被稱爲每次啓動應用程序, 這導致填充我的數據庫大量的示例數據。
我想在安裝應用程序時僅提供一次示例數據。任何人都可以請告訴我該怎麼做?非常感謝 !
P.S:方法insertSampleData()
用於將樣本數據插入Sq-lite數據庫。
雖然其他答案是正確的,但有一個內置的方法來實現你想要的:onCreate
和onUpgrade
方法SqliteOpenHelper
。
- 關於的onCreate()和onUpgrade()每當應用程序是新安裝的
的onCreate(..)被調用。 每當應用程序升級並啓動並且數據庫版本不相同時,都會調用onUpgrade。
至於這裏寫的:https://stackoverflow.com/a/8133640/5349594
我想補充一點,如果你使用的是一些ORM庫,他們大多支持類似這樣的東西。
在您的insertSampleData()
方法中,之前插入數據,請檢查yout表中的行數。
如果是,請執行INSERT
s。
否else
需要聲明:繼續退出。
注意:如果未找到,則樣本數據將在下次運行時重新插入。
因爲在onCreate()
中調用insertSampleData()
。
而且它將插入示例數據,如果沒有找到數據。
因此,表格在開始時不會是空的。
似乎完美的邏輯。 #先生 –
謝謝,先生。這確保了在第一次運行後用戶以某種方式刪除數據時重新插入數據。 –
,但如果用戶可以刪除數據,則可能會導致問題 –
2周的方式這樣做的:
你可以在你的Application
類中創建了檢查,在其onCreate()
類似於此:
SharedPreferences preferences = getSharedPreferences("prefs", Context.MODE_PRIVATE);
boolean firstRun = preferences.getBoolean("firstRun", false);
if(firstRun) {
insertSampleData();
SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean("firstRun", true);
editor.commit();
}
正如Hrundi在評論中所說,您可以使用if
聲明,但可能更好的選擇是使用定製DatabaseHelper
類wihic延伸SQLiteOpenHelper。
Inside SQLiteOpenHelper
您有onCreate
這是第一次創建數據庫時調用的方法。這是創建表格和表格的初始人口應該發生的地方。
你可以谷歌這個,你會發現很多的例子。
下面所有的答案#完美 –