如何管理桌面文件数据库版本?

| 在升级桌面应用程序时如何管理数据库更改? 我们有一个用于桌面应用程序的SQLite数据库。卸载程序保留该数据库供下次安装使用。但是,如果下一次安装具有更新的版本怎么办?如何保留数据但升级表? 我们使用.NET和Linq2sql     
已邀请:
这是我的操作方法: 在我的代码中,我定义了数据库的版本
#define DB_VERSION 2
每次我更改“破坏”数据库的代码时,此版本号都会增加(对数据库内容的模式或语义进行不兼容的更改) 代码创建新数据库时,它将执行此SQL命令
QueryFormat(L\"PRAGMA SCHEMA_VERSION = %d;\",DB_VERSION);
请注意,这必须在执行完所有CREATE TABLE命令之后,否则,sqlite将递增SCHEMA_VERSION。 当代码打开现有数据库时,它要做的第一件事是
Query(L\"PRAGMA schema_version;\")
从该查询返回的SCHEMA_VERSION与DB_VERSION进行比较。如果它们不匹配,则说明数据库是由其他软件版本创建的。接下来会发生什么取决于您需要的细节。通常: 数据库是由较新的软件创建的:通知用户并退出 数据库是由要进行升级的较旧软件创建的:提供用户选项以运行升级代码或重新初始化数据库 数据库是由较旧的软件创建的,没有升级:提供用户选项以重新初始化数据库或退出。 升级代码如何工作的细节在很大程度上取决于您的需求。通常,打开旧数据库并打开一个新的空数据库。读取旧表,根据需要转换数据,然后写入新数据库。关闭数据库。删除旧数据库。将新数据库重命名为标准数据库名称。打开新的数据库。     
如果没有其他问题,则ѭ3the的输出被设计为具有高度可移植性,甚至可以移植到非SQLite数据库中。 或者,如果我误读了您的问题,则可能需要更改表。     

要回复问题请先登录注册