gpt4 book ai didi

android - 如何使用 SQLiteAssetHelper 升级带有新行的数据库版本

转载 作者:搜寻专家 更新时间:2023-11-01 09:36:56 25 4
gpt4 key购买 nike

我开发了一个教程应用程序,其中保存了 500 多个问题和答案。他们是另一张名为收藏夹的 table 。用于用户输入。现在,我想用新的问题和答案更新我的应用程序。但我不想删除收藏夹表的数据(以防用户将一些问题标记为收藏夹,因此不应从收藏夹中删除这些问题)

那我该怎么做呢?因为,我使用 SQLasthehelper 库进行数据库连接。


我的旧数据库包含:

  1. 数据表(静态表)
  2. 收藏夹表(本地表)

因此,根据 sqliteassethelper 文档,我添加了我的新数据库:其中包含:更新的数据表。我没有在这里插入收藏夹表,因为它将在脚本文件中创建。并将该数据库存储在 Assets >>数据库文件夹中。

然后我创建了一个脚本字段db.db_upgrade_1-2.sql

alter table "favourites" rename to "favourites_tmp";
create table "favourites" (
"id" Integer not null primary key autoincrement unique,
"question" text,
"answer" text,
"category" text,
"catid" integer
);
insert into "favourites" ("id","question","answer","category","catid") select from "favourites_tmp" "id","question","answer","category","catid" from "favourites_tmp";
drop table "favourites_tmp";

所以我认为这里的收藏夹表将使用旧数据创建。但当我运行该项目时,它说:没有这样的 tabld 收藏夹。

最佳答案

documentation告诉你

create a text file containing all required SQL commands to upgrade the database from its previous version to it's current version.

您可以使用任何 SQL 命令,不仅是 ALTER TABLE,还可以是 INSERT。

assets文件夹中的数据库文件只有在没有旧数据的情况下才会使用(如果是第一次安装app)。如果有旧数据,SQLiteAssetHelper 会改为执行 SQL 升级脚本。

SQLiteAssetHelper 项目包含 an example这显示了这样一个脚本的样子。

要将数据保存在收藏夹表中,您无需执行任何操作。要添加新的问题/答案,请使用一堆 INSERT 语句。(有关如何获取这些 INSERT 语句,请参阅 How to compare two SQLite databases。)

关于android - 如何使用 SQLiteAssetHelper 升级带有新行的数据库版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42360498/

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