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();
}
}
}