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

问题描述 投票:4回答:4

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

谢谢。

c# sqlite windows-phone win-universal-app windows-10-mobile
4个回答
1
投票

简短回答: 是的,但是您可能需要注意所选的日记模式,例如WAL无法在网络文件系统上运行。

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

有关更多信息,请参阅Appropriate Uses of SQLite


2
投票

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

来自FAQ

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

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


2
投票

您不能随意从UWP应用程序中打开文件,您需要使用RuntimeBroker来处理它,并且可以与RuntimeBroker通信的唯一机制是StorageFile API,而后者又不知道LAN环境中的共享文件夹。

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


0
投票

真实路径:

\\192.168.1.102\Database\MyDB.db3

使用此连接字符串:

Data Source='//192.168.1.102/Database/MyDB.db3';Version=3
  • Windows中的cnStr.Replace(“\”,“/”)
© www.soinside.com 2019 - 2024. All rights reserved.