2012-12-19 47 views
0

我有一個項目必須保存一些註冊到數據庫SQLite,但同時插入到另一個表。Android - 保存多個記錄影響多個表

實施例:

tables : contact_enc contact_det 
contact_enc columns: id, name, telefono 
contact_det columns: id, id_ce, name, address, status 

我需要插入contact_enc領域,並且同一時間contact_det領域。

回答

2

只需使用兩個插入操作

+3

...並將兩個插入包裝在一個事務中,因此您可以確定它們都成功或兩者均失敗,並且不會使數據庫處於不一致狀態。 –

1
String sql = "INSERT INTO contact_enc yourdatabase"; 
long lastID = this.database.execSQL(sql); 

int lastInsertId = Integer.ValueOf(lastId); 

if(lastInsertId > 0) { 
    String sql2 = "INSERT INTO contact_det (id_ce) VALUES(lastInsertId)"; 
    this.database.execSQL(sql2); 
} 
0

如果contact_encid列被定義爲INTEGER PRIMARY KEY,您可以使用last_insert_rowid()功能,如下面的SQL語句,被執行後,立即另一種:

BEGIN TRANSACTION; 
INSERT INTO contact_enc (name, telefono) VALUES (:Name, :Telefono); 
INSERT INTO contact_det (id_ce, name, address, status) SELECT last_insert_rowid(), :Name, :Address, :Status; 
COMMIT; 

(注意:Name:Telefono:Name:Address,並:Status是由名稱綁定的參數。如果你想用數字綁定參數,這在Android中似乎更容易實現,只需用一個?替換每個佔位符?問號)。