无法从UWP应用程序的本地数据存储中打开SQLite数据库文件

无法从UWP应用程序的本地数据存储中打开SQLite数据库文件,sqlite,uwp,Sqlite,Uwp,我正在使用本MSDN官方教程的一节:但我发现以下错误: 备注:有许多与此问题相关(或类似)的在线帖子,但似乎都没有解决方案。大多数这些帖子都有几年的历史了,所以我认为这个问题现在已经解决了。此外,上述教程还使用了类库项目。而且关于这个问题的在线帖子没有涉及.NET标准。因此,我想知道这个问题是否是由于使用.NET标准库引起的。无论如何,我们将非常感谢一个解决方案 SQLite错误14:“无法打开数据库文件” 代码的db.Open()行出现错误: public static void Initia

我正在使用本MSDN官方教程的一节:但我发现以下错误:

备注:有许多与此问题相关(或类似)的在线帖子,但似乎都没有解决方案。大多数这些帖子都有几年的历史了,所以我认为这个问题现在已经解决了。此外,上述教程还使用了类库项目。而且关于这个问题的在线帖子没有涉及
.NET标准
。因此,我想知道这个问题是否是由于使用
.NET标准
库引起的。无论如何,我们将非常感谢一个解决方案

SQLite错误14:“无法打开数据库文件”

代码的db.Open()行出现错误:

public static void InitializeDatabase()
{
    using (SqliteConnection db =
        new SqliteConnection("Filename=sqliteSample.db"))
    {
        db.Open();

        String tableCommand = "CREATE TABLE IF NOT " +
            "EXISTS MyTable (Primary_Key INTEGER PRIMARY KEY, " +
            "Text_Entry NVARCHAR(2048) NULL)";

        SqliteCommand createTable = new SqliteCommand(tableCommand, db);

        createTable.ExecuteReader();
    }
}
注:

  • 上面代码下方的行是:
    此代码创建SQLite数据库并将其存储在应用程序的本地数据存储中。
    这意味着应用程序应该可以访问该本地数据存储
  • 我正在
    windows10
    上使用
    VS2019
    的最新版本
    16.3.5
    。项目上的目标版本选择为
    windows1903
    ,最小版本选择为
    windows1903
  • 更新

  • 这名3岁的类似官员工作正常。因此,这个问题似乎与较新版本的
    .netcore
    有关。但我需要使用最新版本的.NET Core来实现我的应用程序正在使用的其他功能,这些功能在旧版本中是不可用的
  • 我也尝试过类似的老教程,但它在新版本的
    .netcore
    上也不起作用-给出了完全相同的错误
  • 2016年向微软报告的老问题似乎随着新版本的.NET Core再次浮出水面

  • 这是一种误解,
    SqliteConnection db=new-SqliteConnection(“Filename=sqliteSample.db”)
    无法创建Sqlite文件,但可以通过路径访问现有的Sqlite数据库文件

    因此,您需要创建一个有效的
    sqliteSample.db
    文件,并将其放置在UWP项目的根目录中。在属性->生成操作中选择
    内容
    ,以确保将其加载到应用程序目录中

    更新

    请先在
    LocalFolder
    中创建
    sqliteSample.db
    文件

    wait ApplicationData.Current.LocalFolder.CreateFileAsync(“sqliteSample.db”,CreationCollisionOption.OpenIfExists);
    
    然后使用该路径访问数据库文件

    string path=path.Combine(ApplicationData.Current.LocalFolder.path,“sqliteSample.db”);
    使用(sqliteconnectiondb)=
    新的SqliteConnection($“Filename={path}”))
    {
    // ...
    }
    

    致以最诚挚的问候。

    我尝试了你的建议。现在我在第
    createTable.ExecuteReader()行中得到了这个错误部分:
    Microsoft.Data.Sqlite.SqliteException:“Sqlite错误8:尝试写入只读数据库”。
    。我转到Windows资源管理器检查了db文件的权限,它不是只读的(即,它是可写的)。出现此问题的原因是UWP项目中内置的sqlite数据库文件将在生成过程中放置在文件夹中,并且无法修改文件夹中的文件。对于这个问题我很抱歉,我已经修改了答案check@RichardZhangMSFT如果项目未使用
    .NET标准
    类库
    数据访问
    ,则更新后的建议将有效。但是由于
    SQLite
    相关代码将包含在DataAccess库中,我们如何使用那里的
    ApplicationData
    类,因为那里没有
    Windows.Storage
    命名空间。请告知。您好,您不必将创建文件的过程放在类库中。例如,您可以在UWP应用程序上创建一个文件,并将文件路径参数传递给
    InitializeDatabase()
    方法,以这种方式初始化数据库。您好@nam,我们已经更新了有关创建Sqlite数据库的文档,这是,谢谢。