SQLite无法在Xamarin.UWP应用中打开数据库文件

时间:2019-12-21 02:13:59

标签: c# sqlite sqlite-net

遗憾的是,以下问题的答案不能解决我的问题:SQLite - Could not open database file

我知道该文件夹存在,但是仍然遇到以下异常:

  

SQLite.SQLiteException:'无法打开数据库文件:   C:\ Users \ david \ data.db(CannotOpen)'

using (var conn = new SQLiteConnection(@"C:\Users\david\data.db"))
{
    conn.CreateTable<DBItem>();
    var item = new DBItem();
    item.TextData = addEntry.Text;
    conn.Insert(item);
}

1 个答案:

答案 0 :(得分:0)

我按照这里的建议将这个静态常量类添加到了我的项目中:https://docs.microsoft.com/en-us/xamarin/xamarin-forms/data-cloud/data/databases

public static class Constants
{
    public const string DatabaseFilename = "TodoSQLite.db3";

    public const SQLite.SQLiteOpenFlags Flags =
        // open the database in read/write mode
        SQLite.SQLiteOpenFlags.ReadWrite |
        // create the database if it doesn't exist
        SQLite.SQLiteOpenFlags.Create |
        // enable multi-threaded database access
        SQLite.SQLiteOpenFlags.SharedCache;

    public static string DatabasePath
    {
        get
        {
            var basePath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
            return Path.Combine(basePath, DatabaseFilename);
        }
    }
}

并将我的呼叫代码更新为以下内容:

using (var conn = new SQLiteConnection(Constants.DatabasePath))
{
    conn.CreateTable<DBItem>();
    var item = new DBItem();
    item.TextData = addEntry.Text;
    conn.Insert(item);
}

它现在可以工作了。我一直在关注一个略过时的教程,但没有提到此要求。

我仍然很好奇为什么我不能只使用“ C:\ Users \ david \ data.db”?