记录未保存在Windows Phone 8.1中的Sqlite数据库中

时间:2014-10-21 18:44:18

标签: c# sqlite windows-phone-8.1

我想从我的Sqlite数据库中保存和检索数据。为此,我创建了一个数据库名称testDB。 我使用此功能通过使用此功能将数据库文件复制到其手机存储

 public async void UpDatabase()
 {
    bool isDatabaseExisting = false;
    try
    {
        StorageFile storageFile = await ApplicationData.Current.LocalFolder.GetFileAsync("testDB.db");
        isDatabaseExisting = true;
    }
    catch
    {
        isDatabaseExisting = false;
    }
    if (!isDatabaseExisting)
    {

        StorageFile databaseFile = await Package.Current.InstalledLocation.GetFileAsync("testDB.db");
        await databaseFile.CopyAsync(ApplicationData.Current.LocalFolder);
    }
}

但是当我插入并检索记录时,它工作正常但当我关闭项目和模拟器并再次重新打开时,所有数据都会丢失并恢复到原始状态。

这是我的代码

class test
    {
        [PrimaryKey, AutoIncrement]
        public int Id { get; set; }
        [MaxLength(20)]
        public string Name { get; set; }

    }

这是我的插入代码

try
{
    var dbpath = Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "testDB.db");
    using (var db = new SQLite.SQLiteConnection(dbpath))
    {
           db.Insert(new test()
           {
             Name = "abc",
            }
           );
           db.Commit();
           db.Dispose();
           db.Close();
    }
}
catch { }

这是我的检索代码

 ry
{
    var dbpath = Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "testDB.db");
    using (var db = new SQLite.SQLiteConnection(dbpath))
    {


       var q= from n in db.Table<test>()
              select n;


       foreach (var item in q)
       {
           list.Items.Add(item.Name);
       }
        db.Commit();
        db.Dispose();
        db.Close();
        var line = new MessageDialog("Registered successfully");
        line.ShowAsync();
    }
}
catch { }

需要帮助来维护和存储其数据?

1 个答案:

答案 0 :(得分:0)

关闭模拟器始终将其设置回原始状态。这包括所有设置和文件。如果您希望更改是持久的,则必须在实际设备上测试代码,或者在开发应用程序时保持模拟器处于打开状态。

如果您需要在重新启动模拟器后第一次启动应用程序时设置数据库以进行测试,您只需在设置存储中设置一个标记,然后对其进行测试:

if(!LocalSettings.Values.ContainsKey("DBUploaded") {
    // Upload your database
    [..]
    // Once you're done, set the flag so that it's not uploaded again next time
    LocalSettings.Values.Add("DBUploaded", true)
}