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