网络共享路径上的 sqliteconnection(通用 Windows 平台)

Posted

技术标签:

【中文标题】网络共享路径上的 sqliteconnection(通用 Windows 平台)【英文标题】:sqliteconnection over network shared path (Universal Windows Platform) 【发布时间】:2018-05-13 01:09:33 【问题描述】:

尝试通过共享文件夹访问 sqlite 文件。(目前是 Windows IOT 的默认共享文件夹)

string path = Settings.FullPathSQLite;
            //path  value is\\192.168.18.182\C$\Data\Users\DefaultAccount\AppData\Local\Packages\06fb6d66-31b3-4beb-893c-2e0d9fe465f1_3asabdzxmrwg6\LocalState\Project1\settings.sqlite

            var conn = new SQLite.Net.SQLiteConnection(new SQLite.Net.Platform.WinRT.SQLitePlatformWinRT(), path);

抛出错误。但文件位置正确。

"Could not open database file: \\\\192.168.18.182\\C$\\Data\\Users\\DefaultAccount\\AppData\\Local\\Packages\\06fb6d66-31b3-4beb-893c-2e0d9fe465f1_3asabdzxmrwg6\\LocalState\\Portaokul\\settings.sqlite (CannotOpen)"

我可以使用 StorageFile 或 StorageFolder 类访问文件。 但无法弄清楚如何修改 SQLite 连接路径。你有什么想法吗?

将网络路径附加到驱动器名称可能允许访问?所以例如。 “Z:\settings.sqlite”文件可通过普通桌面应用程序访问。但不适用于 UWP。

我发现的最接近的场景是;将文件复制到本地>修改>并上传回网络。 uwpc-copy-database-from-installed-location-to-local-folder

【问题讨论】:

您的包清单中是否拥有所有正确的权限?通过本地网络访问文件需要一些特殊权限 IIRC。 【参考方案1】:

在 UWP 中,应用程序默认可以访问某些文件系统位置,请参考 MSDN 中的File access permissions。即使您可以访问应用程序私有存储区域之外的文件夹,UWP 中的 SQLiteApi 也不支持需要文件名的 SQLite。目前,除了将数据库复制到 UWP 应用本地存储区域之外,似乎没有其他办法。

【讨论】:

两年过去了,仍然没有一个好的方法来做到这一点。这就是为什么人们开始 UWP 项目,然后在 25 分钟后将它们扔进垃圾堆,然后去使用没有 4,592 个障碍的东西。

以上是关于网络共享路径上的 sqliteconnection(通用 Windows 平台)的主要内容,如果未能解决你的问题,请参考以下文章

SQLite 数据源路径奇怪的问题?

加快非现有网络共享的 File.Exists

为啥 SQLiteConnection.Update(client) 不更新表条目?

“SQLite.SQLiteConnection”的类型初始化器抛出异常

如何在局域网内访问 Synology NAS 上的文件

数据库的 SQLiteConnection 对象被泄露!请修复您的应用程序