簡體   English   中英

如何在SQLite數據庫的onCreate函數中使用getWritableDatabase()?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM