sqlite - 无法从 UWP 应用的本地数据存储中打开 SQLite 数据库文件
问题描述
我正在使用这个官方 MSDN 教程的这一部分:在UWP 应用程序中使用 SQLite 数据库,但出现以下错误:
备注:有许多与此问题相关(或类似)的在线帖子,但似乎没有一个解决方案。这些帖子中的大多数都是几年前的,所以我认为这个问题现在已经解决了。此外,上面提到的教程也是使用.NET 标准类库项目。而关于这个问题的网上帖子也没有.NET Standard
涉及。所以,我想知道这个问题是否是由.NET Standard
库的使用引起的。无论如何,将不胜感激解决方案。
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();
}
}
笔记:
- 上述代码正下方的行内容为:
This code creates the SQLite database and stores it in the application's local data store.
这意味着应用程序应该有权访问该本地数据存储。 - 我正在使用最新版本
16.3.5
的VS2019
onWindows 10
。项目上的目标版本选择为Windows 10 1903
,最小版本为Windows 10 1903
更新
解决方案
这是一个误区,SqliteConnection db = new SqliteConnection("Filename=sqliteSample.db")
不能创建Sqlite文件,而是通过路径访问已有的Sqlite数据库文件。
所以你需要创建一个有效的sqliteSample.db
文件,并将它放在UWP项目的根目录下。content
在Properties -> Build 操作中选择,以确保将其加载到应用程序目录中。
更新
请先创建sqliteSample.db
文件LocalFolder
。
await ApplicationData.Current.LocalFolder.CreateFileAsync("sqliteSample.db", CreationCollisionOption.OpenIfExists);
然后使用路径访问数据库文件
string path = Path.Combine(ApplicationData.Current.LocalFolder.Path, "sqliteSample.db");
using (SqliteConnection db =
new SqliteConnection($"Filename={path}"))
{
// ...
}
此致。
推荐阅读
- reactjs - Redux 存储在向我的 reducer 发送操作后不更新
- java - 对不同类型的对象具有相同验证规则的 Java 设计类
- javascript - 如何展平嵌套对象?
- ssis - 具有本地 C 驱动器与网络驱动器的 SSIS 包文件
- postgresql - 如何在rails 5中添加具有较低功能的三元组索引
- postgresql - 将 postgres 参数传递到 Kubernetes 部署中
- python - 寻找一种将行组合在一起的方法,以便在 Python/Pandas 中列匹配并且一列的数字大于或等于零
- heroku - DNS 目标和路由问题
- java - 如何将 Project Reactor 的调度程序与基于 Executor 的库一起使用?
- javascript - AJAX - 在一个 onchange 事件中调用两个函数