2013-03-27 99 views
0

我正在寫一個android應用程序。我需要創建一個SQLite數據庫並在創建時填充它。所以我試圖在onCreate()函數中填充它。但是,要在數據庫中插入數據,需要使用db.getWritableDatabase()。但是不能在數據庫的onCreate()函數內執行此操作,因爲這意味着在創建數據庫期間調用數據庫(它會引發錯誤)。那麼如何在數據庫的onCreate()函數中使用getWritableDatabase()呢?如何在SQLite數據庫的onCreate()函數中使用getWritableDatabase? (Android)

+0

您可以編輯您的問題,包括您目前正在使用的代碼? – FoamyGuy 2013-03-27 15:57:37

+1

檢查[this](http://www.codeproject.com/Articles/119293/Using-SQLite-Database-with-Android)。 – SudoRahul 2013-03-27 15:59:08

+0

@FoamyGuy:onCreate的聲明如下所示:void onCreate(SQLiteDatabase db)。我只是使用db.insert()來放入值,它不工作.. – 2013-03-27 15:59:29

回答

5

但是,要在數據庫中插入數據,需要使用db.getWritableDatabase()。

不,您需要一個SQLiteDatabase實例。一個提供給您的SQLiteOpenHelperonCreate()方法 - 使用它。

例如,在this sample project,我有一個onCreate(),看起來像這樣:

@Override 
    public void onCreate(SQLiteDatabase db) { 
    try { 
     db.beginTransaction(); 
     db.execSQL("CREATE TABLE constants (_id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT, value REAL);"); 

     ContentValues cv=new ContentValues(); 

     cv.put(TITLE, "Gravity, Death Star I"); 
     cv.put(VALUE, SensorManager.GRAVITY_DEATH_STAR_I); 
     db.insert("constants", TITLE, cv); 

     cv.put(TITLE, "Gravity, Earth"); 
     cv.put(VALUE, SensorManager.GRAVITY_EARTH); 
     db.insert("constants", TITLE, cv); 

     // several more inserts here 

     cv.put(TITLE, "Gravity, Venus"); 
     cv.put(VALUE, SensorManager.GRAVITY_VENUS); 
     db.insert("constants", TITLE, cv); 

     db.setTransactionSuccessful(); 
    } 
    finally { 
     db.endTransaction(); 
    } 
    } 
+0

我目前正在使用你說的,但數據沒有被插入到數據庫! – 2013-03-27 16:00:39

+0

@ user2213396:然後顯然你的代碼中有一個錯誤,你需要修復。我發佈了一個樣例'onCreate()'和一個使用它的項目的鏈接。 – CommonsWare 2013-03-27 16:04:47

相關問題