Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在Windows Phone 8中更新现有sqlite数据库而不丢失数据?_C#_Sqlite_Windows Phone 8 - Fatal编程技术网

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

C# 如何在Windows Phone 8中更新现有sqlite数据库而不丢失数据?,c#,sqlite,windows-phone-8,C#,Sqlite,Windows Phone 8,我目前正在Windows Phone 8中使用SQLite数据库。我有一个表,其中有一些列和数据在应用程序上,这是活的。现在,在下一次更新中,我希望在该表中添加一个新列,而不会丢失以前插入的数据 有人能建议我如何达到这个要求吗 编辑 这是我的类,我想在其中添加一个新列 public class Info { [PrimaryKey] public int id{get;set;} public string name{get;set;} public string inf

我目前正在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;}
}
列数据类型为string,其值如下所示

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表格重命名为info_temp
  • 使用更新的模式创建新的信息表
  • 将原始信息表中的数据复制到新信息表中
  • 删除旧的信息表(info_temp)
    您可以提供一些示例或链接来完成此操作吗?@KinjanBhavsar编辑您的问题以添加表定义和新列类型。@KinjanBhavsar是您的应用程序,首先使用EF代码吗?不。我正在插入从服务器获取的所有数据。@KinjanBhavsar那么为什么要发布c#代码呢?请添加SQL表定义。请查看我的更新答案。