gpt4 book ai didi

c# - 如何更新现有的 sqlite 数据库而不丢失 Windows Phone 8 中的数据?

转载 作者:行者123 更新时间:2023-12-03 19:36:47 28 4
gpt4 key购买 nike

我目前正在使用 Windows Phone 8 中的 SQLite 数据库。我在应用程序上有一个包含一些列和数据的表,该表是实时的。现在有了下一次更新,我想在该表中添加一个新列,而不会丢失之前插入的数据。

有人可以建议我如何达到这个要求吗?

编辑

这是我要在其中添加新列的类(class)。

public class Info
{
[PrimaryKey]
public int id{get;set;}
public string name{get;set;}
public string information{get;set;}
public string nick_name{get;set;}
}

列数据类型是字符串,如下所示
public string disp_id{get;set;}

最佳答案

  • 用一些临时名称重命名旧表
  • 创建具有所需名称和新列定义的新表
  • 将旧表数据复制到新表并添加新列数据
  • 丢弃旧表

  • 添加表定义和新列类型也可能有助于我们为这项工作提供一些 SQL。

    无论如何,该应用程序将在更新时停止。

    编辑:

    由于您尚未发布精确响应所需的 SQL,因此我“想象”了它的外观,因此我可以完成此答案。
    鉴于您的表格如下所示:
    CREATE TABLE "info" (
    "id" INTEGER NOT NULL,
    "name" TEXT,
    "information" TEXT,
    "nick_name" TEXT,
    PRIMARY KEY ("id" ASC)
    );

    添加列将恢复到此:
    PRAGMA foreign_keys = OFF;

    alter table "info" rename to "info_temp";

    CREATE TABLE "info" (
    "id" INTEGER NOT NULL,
    "name" TEXT,
    "information" TEXT,
    "nick_name" TEXT,
    "disp_id" TEXT,
    PRIMARY KEY ("id" ASC)
    );

    insert into "info" ("id", "name", "information", "nick_name") select "id", "name", "information", "nick_name" from "info_temp";

    DROP TABLE "main"."info_temp";

    这是做什么的:
  • 禁用当前事务的外键完整性检查,以便
    修改不会因为完整性检查而失败;
  • 将信息表重命名为 info_temp;
  • 使用更新的架构创建一个新的信息表;
  • 将原始信息表中的数据复制到新的信息表中;
  • 删除旧的信息表(info_temp);
  • 关于c# - 如何更新现有的 sqlite 数据库而不丢失 Windows Phone 8 中的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33909192/

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