【问题标题】:Is it possible to use a SQLite database in a shared folder in a PC?是否可以在 PC 的共享文件夹中使用 SQLite 数据库?
【发布时间】:2016-04-14 19:45:57
【问题描述】:

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

谢谢。

【问题讨论】:

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


    【解决方案1】:

    cnStr.Replace("\", "/") in windows

    这很好用!

    【讨论】:

    • 你能详细说明一下这里的意图吗?
    • 我的问题是解决网络上另一台计算机上的数据库问题。通过简单地执行 Haddad 建议的替换,我扭转了一个难以理解的错误。
    【解决方案2】:

    真实路径:

    \\192.168.1.102\Database\MyDB.db3
    

    使用这个连接字符串:

    Data Source='//192.168.1.102/Database/MyDB.db3';Version=3
    
    • cnStr.Replace("\", "/") in windows

    【讨论】:

      【解决方案3】:

      你不能随便从 UWP 应用打开一个文件,你需要使用 RuntimeBroker 来处理它,而唯一可以与 RuntimeBroker 对话的机制是 StorageFile API,它反过来对共享文件夹一无所知局域网环境。

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

      【讨论】:

        【解决方案4】:

        据我所知,开发人员不建议这样做,因为文件锁定在此类设置中非常受限(使用网络文件系统)。

        来自FAQ

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

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

        【讨论】:

        • 是的,它确实会同时访问一个进程。我想尝试这样做有两个原因,一方面是为了学习,另一方面是因为有时我通过电话连接比通过计算机连接更容易。您能否分享并举例说明如何做到这一点?非常感谢。
        【解决方案5】:

        简答
        可以,但是您需要注意您选择的日志模式,例如 WAL 不能在网络文件系统上运行。

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

        更多信息请见Appropriate Uses of SQLite

        【讨论】:

        • 真的是我在测试WP10中Sqlite的使用,唯一的用户就是我自己,所以不存在并发的问题。
        • 您能否知道一个文档,其中解释了如何从我的手机连接到 \\MyPC\MyFolder\database.db 中的数据库?
        • UWP 被重度沙盒化,请注意ef.readthedocs.org/en/latest/getting-started/uwp.html 上的评论“当应用程序运行时,databaseFilePath 将始终位于 ApplicationData.Current.LocalFolder.Path 下。”
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-24
        相关资源
        最近更新 更多