所以我想说我有这段代码:
SQLiteDatabase sqlDB = database.getWritableDatabase();
long iD = 0;
iD = sqlDB.insert(Table1, null, TestV);
我可以以某种方式重写这个以插入两个表而不是一个吗?我的问题是'values'从一个表返回3个值,从另一个表返回1个值。因此,不在'Table1'中的1值会引发在“Table1”中找不到列的错误。有没有办法做到这一点?如果没有,那么我应该做两个单独的插入?我很困惑如何将数据插入一个数据库中的两个表(表是关系:一个有外键)。
答案 0 :(得分:5)
从the documentation来自SQLite中的INSERT:
请注意,该流程图不会让您有机会一次发布到多个表中。 SQLiteDatabase.insert()
是使用INSERT语句的便捷方法。
答案 1 :(得分: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 ......)