簡體   English   中英

如何在不丟失Windows Phone 8中數據的情況下更新現有的sqlite數據庫?

[英]How to update existing sqlite database without losing data in Windows Phone 8?

我目前正在使用Windows Phone 8中的SQLite數據庫。我的應用程序中有一個表,其中包含一些列和數據。 現在進行下一次更新,我想在該表中添加一個新列,而不會丟失以前插入的數據。

有人可以建議我如何達到此要求嗎?

編輯

這是我要在其中添加新列的課程。

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;}
}

列dataType是字符串,其內容如下

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";

這是做什么的:

  1. 禁用當前事務的外鍵完整性檢查,以使修改不會因為完整性檢查而失敗;
  2. 將info表重命名為info_temp;
  3. 使用更新的架構創建一個新的信息表;
  4. 將數據從原始信息表復制到新的;
  5. 刪除舊的信息表(info_temp);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM