我有一个项目必须保存一些注册到数据库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中似乎更容易实现,只需用一个?替换每个占位符?问号)。
...并将两个插入包装在一个事务中,因此您可以确定它们都成功或两者均失败,并且不会使数据库处于不一致状态。 –