gpt4 book ai didi

Android Sqlite 将表从一个数据库转移到另一个数据库

转载 作者:行者123 更新时间:2023-12-05 00:12:38 25 4
gpt4 key购买 nike

我在我的 Android 应用程序中有一个要求。

已经存在一个数据库 A,它有一个表 T。从应用程序的下一个版本开始,我想创建一个新的数据库 B 并将我的表从 AMOVE 到 B使用所有现有数据。

我猜想有一些方法可以从现有数据库中获取转储并将其存储在 Assets 文件中。然后使用该文件在新数据库中恢复表。

无法将该数据存储在内存中,因为如果应用程序在此期间被终止,它可能会进入不一致状态。

我花了一些时间在文档/论坛上搜索后,找不到任何定义明确的方法来执行此操作。

请帮忙。

最佳答案

您可以使用sqlite 的ATTACH 命令来实现。首先是指定第一个数据库的路径。

private static String FIRST_DB_PATH = context.getDatabasePath("Sample.sqlite").toString();

然后将其附加到 secondDb

SQLiteDatabase secondDB = secondDBHandler.getWritableDatabase();
secondDB.execSQL("ATTACH DATABASE '" + FIRST_DB_PATH + "' AS tempDb");

然后进行插入查询。 注意:您使用 secondDB 作为ma​​in

secondDB.execSQL("INSERT INTO main." + SeconDB_table_name +  "SELECT * FROM tempDb."+ FirstDB_table_name );

然后最后分离第一个数据库

secondDB.execSQL("DETACH tempDb"); 

希望对你有帮助

编辑:

这样做是为了删除表格

secondDB.execSQL("DROP TABLE IF EXISTS main." + SeconDB_table_name);

好的,这里是如何为 secondDB 创建一个表作为 firstDb 的副本

secondDB.execSQL("CREATE TABLE main." + SeconDB_table_name + " AS SELECT * FROM tempDb." + FirstDB_table_name);

如果您在comment 中的意思是将第一个表移动到第二个表后删除它,那么在分离之前删除它

secondDB.execSQL("DROP TABLE IF EXISTS tempDb." + FirstDB_table_name);

关于Android Sqlite 将表从一个数据库转移到另一个数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49992149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com