gpt4 book ai didi

c# - 文档库中的 UWP App SQLite Access 数据库

转载 作者:IT王子 更新时间:2023-10-29 06:25:14 28 4
gpt4 key购买 nike

问:我无法在我的文档文件夹中打开 SQLite 数据库:

应用程序:通用 Windows (10) 平台
开发:C#、Visual Studio 2015
SQLite:使用 SQLite.net
目标:Windows 10 桌面和 Windows 10 手机

部署:从 Visual Studio 或 Sideloaded(不需要存储部署)

using SQLite;
using SQLite;
using SQLite.Net;
using SQLite.Net.Async;
using SQLite.Net.Attributes

我可以:

打开并从项目中包含的数据库中读取内容:

using (SQLite.Net.SQLiteConnection conn = new SQLite.Net.SQLiteConnection
(new SQLite.Net.Platform.WinRT.SQLitePlatformWinRT(), ".\\mydb.db3"))
{
//Read queries
}

打开/创建数据库并将其读/写到应用工作区:

string path = Path.Combine
(Windows.Storage.ApplicationData.Current.LocalFolder.Path,"another.db3");

using (SQLite.Net.SQLiteConnection conn = new SQLite.Net.SQLiteConnection
(new SQLite.Net.Platform.WinRT.SQLitePlatformWinRT(), path))
{
//CRUD
}
  • 将another.db3复制到文档
  • 从那里复制到外部存储设备(SD 卡)

我不能

  • 在 Documents 或 SD 中打开数据库

我使用 FilePicker 来选择 Documents 或 SD 中的数据库
然后我在尝试打开数据库连接时使用 File.Path 属性

Windows.Storage.StorageFile File = await FilePicker.PickSingleFileAsync();  
string path = File.Path;

当我尝试打开该连接时收到以下错误消息:

Exception thrown: 'SQLite.Net.SQLiteException' in SQLite.Net.dll
SQLite-GetAllVendors: Could not open database file: C:\Users\me\Documents\another.db3 (CannotOpen)

已添加 SQLite .db 和 .db3 文件关联。

      <Extensions>
<uap:Extension Category="windows.fileTypeAssociation">
<uap:FileTypeAssociation Name=".db">
<uap:DisplayName>SqliteDB</uap:DisplayName>
<uap:EditFlags OpenIsSafe="true" />
<uap:SupportedFileTypes>
<uap:FileType>.db</uap:FileType>
<uap:FileType>.db3</uap:FileType>
</uap:SupportedFileTypes>
</uap:FileTypeAssociation>
</uap:Extension>
</Extensions>
</Application>
</Applications>

已经添加了相关的Capabilities

  <Capabilities>
<Capability Name="internetClient" />
<uap:Capability Name="picturesLibrary" />
<uap:Capability Name="documentsLibrary" />
<uap:Capability Name="videosLibrary" />
<uap:Capability Name="userAccountInformation" />
<uap:Capability Name="removableStorage" />
<DeviceCapability Name="webcam" />
<DeviceCapability Name="location" />
</Capabilities>

当然有一些方法可以在通用 Windows (10) 应用程序的文档或内存棒上打开 SQLite 数据库。
提前致谢

最佳答案

因为 SQLite 直接打开数据库文件而不是通过文件代理,所以它只能在应用程序安装和应用程序数据中看到数据库(应用程序分别具有直接文件读取权限和读/写权限的目录)。

更改此设置需要更新 SQLite 以使用来自文件代理对象(StorageFile 和 StorageFolder)的流来访问通过功能、选择器等授予权限的位置。

关于c# - 文档库中的 UWP App SQLite Access 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35084058/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com