[英]How to use getWritableDatabase() in onCreate function of SQLite database?
我正在編寫一個Android應用程序。 為此,我需要使用txt文件中的數據填充SQLite數據庫。 因此,在數據庫的onCreate函數中,我正在創建數據庫,然后使用數據填充它。 這是onCreate的聲明:
public void onCreate(SQLiteDatabase db) {
但是當我在onCreate中使用此行時:
db = this.getWritableDatabase();
我在Logcat的運行時遇到此錯誤:“ java.lang.IllegalStateException:getDatabase遞歸地調用了(812)”。 因此,現在我無法從onCreate內填充數據庫,並且卡住了。 任何幫助將不勝感激。
首次調用getReadableDatabase或getWriteableDatabase時會調用onCreate()。 確實發生了什么事,因為尚未創建數據庫並且您的數據庫已被遞歸調用onCreate。
db = this.getWritableDatabase();
調用會在創建中觸發創建。
如果需要預填充數據庫,只需將onCreate
的db參數用作可寫數據庫。
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(YOUR_STATEMENT);
.
.
}
如果您需要執行許多數據庫操作,請使用
db.beginTransaction();
.
.
db.setTransactionSuccessful();
} catch (SQLException e) {
} finally {
db.endTransaction();
}
通常更快。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.