2013-02-11 84 views
0

我有一个独立的Windows Form应用程序,用VB.NET编写,当前连接到本地Access数据库(.mdb文件)并使用多个表中的数据。它从不写入也不修改数据库。我试图找出如何保护这个数据库,以便用户无法访问它。我想最好的方法是将数据库作为嵌入式资源存储在项目中。但是,我无法弄清楚如何使这项工作。VB.net连接到嵌入式数据库

我已将.mdb文件添加到项目资源中,并将其属性设置为“Embedded Resource”和“Do not copy”。但是现在如何引用数据库来创建连接?

之前,我使用的连接字符串“供应商= Microsoft.Jet.OLEDB.4.0;数据源=了MyDatabase.mdb”

如何我现在写的连接字符串参照嵌入的资源?

+0

您是否尝试过在访问数据库上设置密码? – 2013-02-11 18:01:09

+0

即使隐藏和密码保护,我也不希望任何人甚至可以访问该文件。我听说有办法破解密码。 – 2013-02-11 18:16:07

+0

将数据库导出到xml或类似的东西会更好吗,然后使用流读取器而不是数据库连接? – 2013-02-11 18:17:21

回答

0

对不起,我从来没有把它关闭。

我的解决方案比建议的更简单。您可以将.mdb文件添加到项目本身,而不是混淆整个“资源”业务。然后将该文件的复制到输出属性设置为“不要复制”。因此,.mdb被编译到应用程序中,但文件本身对用户不可用。

2

“我在想最好的方法是将DB作为嵌入式资源存储在项目中。”

这通常与古老的skool安全有关,在过去,使用Access dBs作为后端的DotNetNuke开发人员实际上已将.mdb重命名为.resources,因为您无法从Web下载资源文件。

“将数据库导出到xml或类似的东西,然后使用流读取器而不是数据库连接,会更好吗?”

No. You cant read an Access file from a stream而XML dB与Access数据库相比支持的并发性更低。

如果您确实需要保护数据,那么您绝对选择了错误的数据存储。

@JohnBus​​tos写道:“远程存储数据库并让程序通过互联网访问它。”

请不要这样做。如果有的话将其放在网络共享上并限制访问。然后查看将访问dB升级到SQL Server。

0

是的,我有同样的问题,我将数据库转换为XML或嵌入的TXT文件。它工作得很好!