2012-12-19 45 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中似乎更容易实现,只需用一个?替换每个占位符?问号)。