2013-02-11 86 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文件。它工作得很好!