Android 来自sql查询的多个数据库操作

Android 来自sql查询的多个数据库操作,android,Android,我有两个SQLiteDatabase数据库实例。我需要将数据从一个复制到另一个。 我需要执行此查询: INSERT INTO `toDB`.`tableName` SELECT * FROM `fromDB`.`tableName` 那么,如何在数据库实例中执行此操作?如何替换toDB和fromDB?从未尝试过,但应该是这样: 您必须在SQLite级别访问另一个数据库,以便SQLite可以直接访问它 例如,您打开应为toDB的数据库,并发出以下命令(通过execSQL) 您现在应该可以访问另

我有两个
SQLiteDatabase
数据库实例。我需要将数据从一个复制到另一个。 我需要执行此查询:

INSERT INTO `toDB`.`tableName` SELECT * FROM `fromDB`.`tableName` 

那么,如何在数据库实例中执行此操作?如何替换toDB和fromDB?

从未尝试过,但应该是这样:

您必须在SQLite级别访问另一个数据库,以便SQLite可以直接访问它

例如,您打开应为
toDB
的数据库,并发出以下命令(通过
execSQL

您现在应该可以访问另一个数据库,并且可以执行以下操作

INSERT INTO main.tableName SELECT * FROM fromDbB.tableName
最初打开的数据库自动命名为“main”


您可以而且应该通过获取数据库的路径,因为不能保证所有设备上的路径都相同。

是的,您可以按以下方式执行此操作:


您是否需要使用从一个表复制到同一数据库中的另一个表?将一个表从第一个数据库复制到第二个数据库,但您可以使用/data/data/…访问其他应用程序的数据库吗?如果数据库文件具有正确的权限是:但通常不是。幸运的是,我的数据库存储在SD卡中,因此此方法有效。谢谢但我仍然想知道是否有更优化的方法,您可以将数据库文件复制到内部存储并从那里使用它,而不是导入它。但是从数据库到数据库的复制数据应该是你能做的最快的。在我的情况下,我不需要它。我需要导入该表,更改表结构并将其放入应用程序的数据库中。但是谢谢!
INSERT INTO main.tableName SELECT * FROM fromDbB.tableName
    DatabaseHelper dbHelper = DatabaseHelper.create(CMOSApplication.getInstance());
    SQLiteDatabase db = null;
    try {
        db = dbHelper.getWritableDatabase();
        db.execSQL("attach database ? as oldDB",
                new String[] { CMOSApplication.getInstance().getDatabasePath("cmos_database").getPath() });
        db.execSQL("insert into task select * from oldDB.task");
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } finally {
        if(db != null){
            try {
                db.execSQL("detach oldDB");
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }