我正在尝试将版本控制实现到我的数据库中。我有以下代码:
if (File.Exists (dbPath)) {
database = new SQLiteConnection(dbPath);
dbVersion = GetDatabaseVersion();
if (dbVersion != DATABASE_VERSION) {
CreateDatabase(dbPath);
database = new SQLiteConnection(dbPath);
SetDatabaseVersion(DATABASE_VERSION);
}
} else {
CreateDatabase(dbPath);
database = new SQLiteConnection(dbPath);
SetDatabaseVersion(DATABASE_VERSION);
}
第一次运行代码时File.Exists (dbPath)
按预期返回false。当我停止应用程序并再次构建和部署时,File.Exists (dbPath)
返回true(如预期的那样)并检查版本。但是当我更改数据库中的条目(而不是版本)并且我再次构建和部署File.Exists (dbPath)
时返回false。所以我想sqlite文件在被更改后会被删除吗?
我想要实现的是当更改sqlite文件但版本号仍然相同时,应用程序的数据库不会更新。只有当版本不匹配时,才需要更新。
(顺便说一下,这种方式适用于iOS)
任何人都可以帮助我吗?
提前致谢。
答案 0 :(得分:1)
如果没有访问调试器,很难回答出错的问题。但是,您创建和更新数据库的方式看起来很不寻常,而且不必要地复杂化。你应该考虑使用SQLiteOpenHelper
,这将允许你这样的结构:
public class MyDatabase extends SQLiteOpenHelper {
private static final int VERION = ...;
public MyDatabase(Context context) {
super(context, "mydatabasename", null, VERION);
}
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table...");
...
}
public void onUpgrade(SQLiteDatabase db, int oldVersion, intNewVersion) {
db.execSQL("...") // whatever you have to change from one version to another
}
}
这不会丢失任何数据库文件。
答案 1 :(得分:0)