如何使用Android中的SQLiteDatabase一次将数据插入两个表?

时间:2013-05-01 23:05:39

标签: android database sqlite insert

所以我想说我有这段代码:

SQLiteDatabase sqlDB = database.getWritableDatabase();
long iD = 0;
iD = sqlDB.insert(Table1, null, TestV);

我可以以某种方式重写这个以插入两个表而不是一个吗?我的问题是'values'从一个表返回3个值,从另一个表返回1个值。因此,不在'Table1'中的1值会引发在“Table1”中找不到列的错误。有没有办法做到这一点?如果没有,那么我应该做两个单独的插入?我很困惑如何将数据插入一个数据库中的两个表(表是关系:一个有外键)。

2 个答案:

答案 0 :(得分:5)

the documentation来自SQLite中的INSERT:

enter image description here

请注意,该流程图不会让您有机会一次发布到多个表中。 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 ......)