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

joh*_*ohn 3 database sqlite android insert

所以我要说这个代码:

SQLiteDatabase sqlDB = database.getWritableDatabase();
long iD = 0;
iD = sqlDB.insert(Table1, null, TestV);
Run Code Online (Sandbox Code Playgroud)

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

Mow*_*Joe 5

从SQLite中的INSERT 文档:

在此输入图像描述

请注意,该流程图不允许您一次性发布到多个表中.SQLiteDatabase.insert()是使用INSERT语句的便捷方法.


m.g*_*shi 5

您可以使用数据库事务模拟这个:

    SQLiteDatabase db = getWritableDatabase();

    db.beginTransaction();

    try {

        db.execSQL("insert into table1...");
        db.execSQL("insert into table2...");

        db.setTransactionSuccessful();
    } finally {
        db.endTransaction();
    }
Run Code Online (Sandbox Code Playgroud)

如果插入的值之间存在依赖关系,则可能需要选择插入的顺序,例如,如果存在外键关系:(插入到table1然后是table2,或者先插入到table2 ......)