[英]Is it possible to prevent database files from being deleted/modified externally without having it opened in c#?
情况:
目前,我正在从我的前身调试可处理sqlite数据库(.db3文件格式)的代码。 在软件中,您可以加载一个或多个数据库。 这些数据库上的常规信息(获取所有表名,获取所有列名等)直接从文件中处理,但是对于实际数据信息,数据库被复制到内存数据库中,从中查询数据。 因此,在收集了初始信息并将所有数据保存到内存数据库之后,不再使用实际的文件。
但是,如果用户从列表中添加/删除数据库,它们仍将显示在GUI上并被引用。
问题:
所有这些都会导致以下问题:如果用户修改/删除已加载数据库的文件(之所以可行,因为我们没有与文件的开放连接),该软件的内部数据库池与实际文件列表。 结果,在这种情况下,一旦使用的数据库列表被更新,我们就具有不确定的行为。
可能的解决方案(?)
问题:此问题还有其他方法/建议吗? 对我而言,最好/最简单的方法是找到一种方法来防止文件列表被修改。 到目前为止,我还没有找到一种适合该方法的好的解决方案。
保持与SQLite数据库文件的连接打开将防止Windows删除它。
一个糟糕但快速的解决方案可能是允许原始代码将文件读取到内存,然后获取与该文件的新连接。 您可以保持此连接打开而无需执行任何操作,以防止其被删除。 一旦使用该数据集完成了应用程序用户的使用,就可以处置该连接,从而允许再次删除该文件。
我不建议这样做-这是一个肮脏的解决方法。 但是,它可能会给您更多时间来适当地重构代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.