我有一個項目必須保存一些註冊到數據庫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
領域。
我有一個項目必須保存一些註冊到數據庫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
領域。
只需使用兩個插入操作
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);
}
如果contact_enc
的id
列被定義爲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中似乎更容易實現,只需用一個?替換每個佔位符?問號)。
...並將兩個插入包裝在一個事務中,因此您可以確定它們都成功或兩者均失敗,並且不會使數據庫處於不一致狀態。 –