我有一个用VB.NET编写的独立Windows窗体应用程序,它当前连接到本地Access数据库(.mdb文件)并使用来自多个表的数据。它永远不会写入或修改数据库。我正在试图弄清楚如何保护这个数据库,以便用户无法访问它。我认为最好的方法是将DB存储为项目中的嵌入式资源。但是,我无法弄清楚如何使这项工作。
我已将.mdb文件添加到项目资源中,并将其属性设置为“Embedded Resource”和“Do not copy”。但是现在如何引用数据库来创建连接?
在我使用连接字符串“Provider = Microsoft.Jet.OLEDB.4.0; Data Source = MyDatabase.mdb”之前
如何参考嵌入式资源编写连接字符串?
答案 0 :(得分:2)
“我认为最好的方法是将数据库存储为项目中的嵌入式资源。”
这通常与旧的skool安全性有关,在过去,使用Access dBs作为后端的DotNetNuke开发人员实际上将.mdb重命名为.resources,因为你无法从网上下载资源文件。
“将数据库导出到xml或类似的东西然后使用流阅读器而不是数据库连接会更好吗?”
没有。 You cant read an Access file from a stream并且XML dB的并发支持比Access数据库更少。
如果您确实需要保护数据,那么您绝对选择了错误的数据存储。
@JohnBustos写道“远程存储数据库并让程序通过互联网访问它。”
请不要这样做。如果有什么东西把它放在网络共享上并限制访问。然后看看将访问dB升级到SQL Server。
答案 1 :(得分:0)
是的,我遇到了同样的问题,我将数据库转换为XML或甚至是嵌入的TXT文件。它工作得很好!
答案 2 :(得分:0)
对不起,我从来没有关闭它。
我的解决方案甚至比提出的解决方案更简单。您可以将.mdb文件添加到项目本身,而不是弄乱整个"资源"商业。然后将文件的“复制到输出”属性设置为“#34;不要复制"”。因此.mdb被编译到应用程序中,但用户无法使用文件本身。