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

时间:2016-01-10 12:58:28

标签: c# sqlite windows-phone win-universal-app windows-10-mobile

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

感谢。

5 个答案:

答案 0 :(得分:2)

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

来自FAQ

  

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

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

简短回答
是的,您可以谨慎选择您选择的日记模式,例如WAL无法在网络文件系统上运行。

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

有关详细信息,请参阅Appropriate Uses of SQLite

答案 3 :(得分:1)

真实路径:

\\192.168.1.102\Database\MyDB.db3

使用此连接字符串:

Data Source='//192.168.1.102/Database/MyDB.db3';Version=3
    在Windows中
  • cnStr.Replace(“ \”,“ /”)

答案 4 :(得分:-2)

在Windows中

cnStr.Replace(“ \”,“ /”)

这很好用!