是否可以在电脑的共享文件夹中使用SQLite数据库
本文关键字:文件夹 数据库 SQLite 共享文件 共享 电脑 是否 | 更新日期: 2023-09-27 18:29:37
我正在开发一个UWP应用程序(Windows phone 10),我在局域网中的PC的共享文件夹中有一个SQLite数据库。我想知道我是否可以在windows phone应用程序中使用这个数据库,就像我在WPF应用程序中所做的那样,我可以设置数据库的路径,并且我可以在局域网中的任何计算机上使用它。
谢谢。
真实路径:
''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 中
这太棒了!