SQLite不存储/检索数据库

时间:2016-06-09 16:07:54

标签: c# windows sqlite uwp

我有一个用C#编写的Windows 10 UWP应用程序。我正在使用SQLite在本地存储我的数据。我遇到的问题是永远不会使用此代码保存和/或检索文件。它应该工作,但我不知道什么是错的。

dbExists总是计算为false,所以我在这里缺少什么?

private SQLiteConnection localConn;
private string dbPath = Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "myDatabase.db");

public async void DBInit()
{
    bool dbExists = false;
    try
    {
        var store = await ApplicationData.Current.LocalFolder.GetFileAsync(dbPath);
        dbExists = true;
    }
    catch { dbExists = false; }
    if (!dbExists)
    {
        using (localConn = new SQLiteConnection(new SQLitePlatformWinRT(), dbPath))
        {
            // Create table
            localConn.CreateTable<MyTable>();
        }
    }
    else // CURRENTLY NOT FIRING!!
    {}
}

2 个答案:

答案 0 :(得分:2)

请考虑使用以下代码创建和访问数据库文件:

StorageFile notesFile = await storageFolder.CreateFileAsync(dbPath, CreationCollisionOption.OpenIfExists);

如果新文件不存在,则会创建新文件,并在创建文件时检索它。

请查看我的博客文章,了解有关UWP数据存储的更多信息: https://mobileprogrammerblog.wordpress.com/2016/05/23/universal-windows-10-apps-data-storage/

答案 1 :(得分:1)

我认为你错过了这段重要的代码:

SQLiteConnection.CreateFile("mydatabase.sqlite");

首先执行此操作,然后创建引用(现在)创建的文件的连接实例。

另外,我建议您使用.sqlite扩展名命名数据库,以便团队的其余部分和传入的开发人员,然后查看db文件工件,可以立即告诉这是一个sqlite数据库中。

编辑: 该方法是一种静态方法。所以你会像这样使用它......

using System.Data.SQLite;

namespace sqlite_sample
{
    class Program
    {
        static void Main(string[] args)
        {
            SQLiteConnection.CreateFile("sample.db");
        }
    }
}

以下工作:

var conn = SQLiteConnection(...);
conn.CreateFile(dbPath);  //<-- static methods can't be invoked at the instance level...