4

所以可以说我有这个代码:

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

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

4

2 回答 2

7

从SQLite 中的 INSERT文档:

在此处输入图像描述

请注意,流程图不会让您有机会同时发布到多个表中。SQLiteDatabase.insert()是使用 INSERT 语句的便捷方法。

于 2013-05-01T23:09:54.510 回答
5

您可以使用数据库事务来模拟它:

    SQLiteDatabase db = getWritableDatabase();

    db.beginTransaction();

    try {

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

        db.setTransactionSuccessful();
    } finally {
        db.endTransaction();
    }

如果插入的值之间存在依赖关系,您可能需要选择插入的顺序,例如,如果存在外键关系:(先插入表 1 再插入表 2,或先插入表 2...)

于 2013-05-01T23:58:08.583 回答