SQLite 重启应用后丢失数据(插入、更新)
SQLite loses data (insert, update) after restarting app
当我更新我的数据时:
using (SQLiteConnection conn = new SQLiteConnection(DB_PATH))
{
var query = conn.Table<kursy>().Where(k => k.kurs == kursStaryRubel).SingleOrDefault();
query.data = kursAktualnyData;
query.kurs = kursAktualnyRubel;
conn.Update(query);
}
一切正常。数据已更新。但是当我关闭并再次打开我的应用程序时,此数据具有旧值 - 它没有更新。我正在使用相同的数据库,它没有被重新创建。为什么会这样?
我的DB_PATH:
public static string DB_PATH = Path.Combine(ApplicationData.Current.LocalFolder.Path, "test.db");
我的数据库文件 属性 Copy to Output Directory
设置为 Copy if Newer
我已经解决了问题。
一开始不知不觉数据库被替换了。问题是我在 Storage
中创建了数据库,而不是在 IsolatedStorage
中。我不知道我的理解是否正确,但是当它在存储中创建时,数据库是在应用程序的内存中创建的,这就是为什么当我关闭应用程序时数据库会过期。但是当我在 IsolatedStorage 中创建数据库时,它会永久放置在 phone 内存中。然后即使我关闭应用程序,数据库仍然存在,因为它是在 phone 内存中创建的,而不是在应用程序内存中创建的。
当我更新我的数据时:
using (SQLiteConnection conn = new SQLiteConnection(DB_PATH))
{
var query = conn.Table<kursy>().Where(k => k.kurs == kursStaryRubel).SingleOrDefault();
query.data = kursAktualnyData;
query.kurs = kursAktualnyRubel;
conn.Update(query);
}
一切正常。数据已更新。但是当我关闭并再次打开我的应用程序时,此数据具有旧值 - 它没有更新。我正在使用相同的数据库,它没有被重新创建。为什么会这样?
我的DB_PATH:
public static string DB_PATH = Path.Combine(ApplicationData.Current.LocalFolder.Path, "test.db");
我的数据库文件 属性 Copy to Output Directory
设置为 Copy if Newer
我已经解决了问题。
一开始不知不觉数据库被替换了。问题是我在 Storage
中创建了数据库,而不是在 IsolatedStorage
中。我不知道我的理解是否正确,但是当它在存储中创建时,数据库是在应用程序的内存中创建的,这就是为什么当我关闭应用程序时数据库会过期。但是当我在 IsolatedStorage 中创建数据库时,它会永久放置在 phone 内存中。然后即使我关闭应用程序,数据库仍然存在,因为它是在 phone 内存中创建的,而不是在应用程序内存中创建的。