是否可以在电脑的共享文件夹中使用SQLite数据库

本文关键字:文件夹 数据库 SQLite 共享文件 共享 电脑 是否 | 更新日期: 2023-09-27 18:29:37

我正在开发一个UWP应用程序(Windows phone 10),我在局域网中的PC的共享文件夹中有一个SQLite数据库。我想知道我是否可以在windows phone应用程序中使用这个数据库,就像我在WPF应用程序中所做的那样,我可以设置数据库的路径,并且我可以在局域网中的任何计算机上使用它。

谢谢。

是否可以在电脑的共享文件夹中使用SQLite数据库

真实路径:

''192.168.1.102'Database'MyDB.db3

使用此连接字符串:

Data Source='//192.168.1.102/Database/MyDB.db3';Version=3
  • cnStr.Replace("''","/")在窗口中

简短回答
是的,你可以,但是你需要小心你选择的日记模式,例如WAL不能在网络文件系统上工作。

长答案
如果您发现自己处于许多客户端/程序需要通过网络访问公共数据库的情况下,您应该考虑客户端/服务器数据库,或者提供某种类型的API,将客户端的数据顺序持久化到SQLite DB。

有关更多信息,请参阅SQLite 的适当使用

我记得,开发人员不建议使用它,因为在这种设置中(使用网络文件系统)文件锁定非常受限。

来自常见问题解答:

如果多个进程可能试图同时访问SQLite数据库文件,则应避免将该文件放在NFS上。在Windows上,微软的文档说,如果你没有运行Share.exe守护程序,锁定可能无法在FAT文件系统下工作。有很多使用Windows经验的人告诉我,网络文件的文件锁定非常有缺陷,而且不可靠。如果他们说的是真的,那么在两台或多台Windows机器之间共享SQLite数据库可能会导致意外的问题。

但是,如果您打算一次只从一个进程使用它(不涉及并发),那么应该没问题。

您不能从UWP应用程序中任意打开文件,您需要使用RuntimeBroker来处理它,而唯一可以与RuntimeBroker对话的机制是StorageFile API,它反过来对LAN环境中的共享文件夹一无所知。

要访问共享数据库(SQLite或其他),最好的选择是将其托管在某种形式的服务器上,并构建一个API来与之接口(可以是SOAP、REST等)。对于断开连接的使用,您仍然可以在每个客户端上使用本地缓存,但您需要自己处理复制。

cnStr.Replace("''","/")在windows 中

这太棒了!