2013-05-01 40 views
1

因此,可以說我有這樣的代碼:如何在Android中使用SQLiteDatabase將數據一次插入兩個表中?

SQLiteDatabase sqlDB = database.getWritableDatabase(); 
long iD = 0; 
iD = sqlDB.insert(Table1, null, TestV); 

我可以以某種方式重寫這個插入到兩個表,而不是一個?我的問題是'值'從一個表中返回3個值,而另一個表中返回1個值。因此,不在'表1'中的1值引發了在'表1'中找不到該列的錯誤。有沒有辦法做到這一點?如果沒有,那麼我應該做兩個單獨的插入?我很困惑如何將數據插入到一個數據庫的兩個表中(表是關係型:有一個外鍵)。

回答

5

the documentation的INSERT SQLite中:

enter image description here

注意,流程圖不給你一個機會,張貼到多個表一次。 SQLiteDatabase.insert()是使用INSERT語句的一種便利方法。

+1

我以前見過這個圖。我只是好奇,是否有辦法繞過它,如果沒有任何選擇。 – john 2013-05-01 23:12:04

+0

@john不表示沒有。 – MowDownJoe 2013-05-01 23:14:19

5

您可以模擬這種使用數據庫事務:

SQLiteDatabase db = getWritableDatabase(); 

    db.beginTransaction(); 

    try { 

     db.execSQL("insert into table1..."); 
     db.execSQL("insert into table2..."); 

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

您可能需要選擇插入的順序是否有插入的值之間的依賴關係,例如,如果有一個外鍵關係:(插入到table1然後table2,或者先插入到table2 ...)

相關問題