2011-12-21 35 views
1

我想在開始時爲我的應用程序插入所需的數據,我將使用這些數據。我想插入一次,並且不得有重複。因此,在「onCreate」中,我是這樣做的:如果表的行數(如學生等)爲0,我插入學生。我不認爲這是做這件事的最好方法。所以我想知道是否有更好的方法。Android數據庫插入開始

+1

「開始時」是指用戶開始使用應用程序的任意會話時,還是意味着有史以來第一次使用該應用程序? – Argyle 2011-12-21 21:13:09

+0

我的意思是安裝後。數據將在應用程序安裝期間插入,之後當用戶啓動應用程序時,不得有插入操作。 – BCK 2011-12-21 23:18:58

回答

5

如果您希望在安裝時填充數據庫並且永​​遠不會有其他任何時間,那麼您唯一合理的選擇是將預填充的數據庫與您的APK一起打包爲內置資源。這具有簡化您的應用程序的優勢。或者,如果您爲數據庫實施SQLiteOpenHelper,則只會在第一次運行應用程序時或在某人清除所有應用程序的數據時插入任何在SQLiteOpenHelper.onCreate(SQLiteDatabase)期間插入的內容(這或多或少會使您回退無論如何,新的安裝)。 SQLiteOpenHelper超類知道在調用getWritableDatabase()getReadOnlyDatabase()方法之一來獲取數據庫引用時是否運行創建代碼。

值得注意的是,Android並沒有真正讓您像桌面軟件那樣運行安裝程序。如果您需要做任何設置工作,您需要能夠檢測並記住您的應用程序之前運行過的時間。

+0

首先感謝您的回覆。你能舉出第一個選擇的例子嗎?我使用SQLiteOpenHelper並在我的主要活動的「onCreate」中插入數據。因此,它總是在應用程序啓動時插入相同的數據。 – BCK 2011-12-22 08:49:51

+0

您將在構建過程中創建SQLite數據庫文件,並將其作爲[原始資源](http://developer.android.com/guide/topics/resources/providing-resources.html)。查看該表以獲取更多信息。 – Argyle 2011-12-22 19:22:54

+0

您需要將插入語句放入SQLiteOpenHelper實現的'onCreate(SQLiteDatabase)'調用中。這幾乎可以肯定你有你的表創建語句。你的數據是否插入到同一個地方,並且只有在數據庫文件第一次創建時纔會執行插入操作。 – Argyle 2011-12-22 19:25:16