Android:使用SQLiteAssetHelper升级用户数据库

我似乎无法理解在
https://github.com/jgilfelt/android-sqlite-asset-helper阅读文档后如何升级数据库

我想将用户数据仅保留在一个表中.我不需要改变任何表格.升级几乎是在另一个表中添加新行.

所以流程(我猜)是:

onUpgrade:
1)从表1中获取用户定义数据的ArrayList
2)更新数据库
3)将用户数据放回表1中

我觉得这一切都错了吗?
任何提示将非常感谢.

最佳答案 我误解了更新脚本的要点.

当您的应用程序更新时,它不会安装新数据库.它保留了旧的,只运行更新脚本,使您的旧脚本加快速度.

因此,如果您不需要更改您的用户数据,它将不会丢失.它只会在脚本中运行sql.

如果确实需要更改用户数据表,可以使用临时表进行更改.

例如:

-- add a FullNames column to Employees
ALTER TABLE "Employees" RENAME TO 'Employees_ME_TMP';

CREATE TABLE "Employees" 
(
    "EmployeeID" int NOT NULL,
    "LastName" varchar(20) NOT NULL,
    "FirstName" varchar(10) NOT NULL,
    "FullName" varchar(150),
    PRIMARY KEY ("EmployeeID")
);

INSERT INTO "Employees"  
(
    "EmployeeID", 
    "LastName", 
    "FirstName", 
    "FullName"
) 
SELECT 
    "EmployeeID", 
    "LastName", 
    "FirstName", 
    "FirstName" || ' ' || "LastName" 
FROM 
    "Employees_ME_TMP";

DROP TABLE "Employees_ME_TMP";
点赞