我有两个SQLiteDatabase
数据库实例。我需要将数据从一个复制到另一个。
我需要执行这个查询:
INSERT INTO `toDB`.`tableName` SELECT * FROM `fromDB`.`tableName`
那么,我该怎么做我的数据库实例?如何替换到DB和fromDB?
答案 0 :(得分:2)
从未尝试过,但应该这样:
您必须ATTACH SQLite级别的其他数据库,以便sqlite可以直接访问它。
例如,您打开应为toDB
的数据库并发出以下命令(通过execSQL
)
ATTACH DATABASE '/data/data/your.package/databases/dbname.db' AS fromDB
您现在应该可以访问其他数据库并且可以
INSERT INTO main.tableName SELECT * FROM fromDbB.tableName
您最初打开的数据库自动命名为“main”。
您可以而且应该通过Context#getDatabasePath获取数据库的路径,因为无法保证所有设备上的路径都相同。
答案 1 :(得分:0)
是的,你可以这样做:
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(); } } }