2010-07-30 107 views
0

將Visual Studio 2010用於C#WPF項目。我知道如何使用ADOX命名空間創建Access 2000-2003 db文件。創建受密碼保護的Access數據庫

ADOX.CatalogClass cat = new CatalogClass(); 
string str = "provider=Microsoft.Jet.OleDb.4.0;Data Source=" + _dbPath + ";"; 
cat.Create(str); 
cat = null; 

連接並打開數據庫:

conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" 
     + _dbPath + ";"); 

//connect to it with a password 
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + _dbPath + ";User Id=admin;Password=myPassword;" 

我想創建保護文件的密碼:

ADOX.CatalogClass cat = new CatalogClass(); 
string str = "provider=Microsoft.Jet.OleDb.4.0;Data Source=" 
+ _dbPath + ";Password=myPassword;"; 
cat.Create(str); 
cat = null; 

這在運行時產生一個錯誤:

無法開始你的申請。工作組信息文件丟失或僅由其他用戶打開。

當我創建沒有密碼時,數據庫已成功創建。

如何使用此策略創建受密碼保護的Access數據庫?

+0

數據庫密碼不是安全的,而是「安全劇場」 - 它們對於任何實際用途都是無用的,應該避免。 – 2010-07-30 18:09:49

+0

劇院可以是有用的。 Access數據庫密碼是在篡改之前讓你思考的好方法。 – Fionnuala 2010-07-31 08:25:00

+0

我不同意一個例外。如果您使用的是MDB/ACCDB,只是通過電子郵件或其他方法將數據發送給某人,那麼數據庫密碼比壓縮文件密碼更好,更強大。但是在多用戶共享後端數據文件的生產應用程序中,使用數據庫密碼僅僅是愚蠢的行爲。 – 2010-08-02 00:19:28

回答

1

如果你說的是數據庫的密碼,而不是用戶級別的安全性,這需要一個工作組文件,您可以更改連接字符串包括:

Jet OLEDB:Database Password=MyDbPassword; 

即:

ADOX.Catalog cat = new CatalogClass(); 
string str = "provider=Microsoft.Jet.OleDb.4.0;Data Source=" 
+ _dbPath + ";Jet OLEDB:Database Password=MyDbPassword;"; 
cat.Create(str); 
cat = null; 

- - http://www.connectionstrings.com/access

使用此處的信息:http://support.microsoft.com/kb/317881,稍作修改:

ADOX._Catalog cat = new ADOX.Catalog(); 

cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=PW;" + 
     "Data Source=C:\\Docs\\NewMDB.mdb;"); 

我發現我可以創建一個密碼保護的Access數據庫。

+0

這是爲了連接到數據庫,它沒有爲創建工作!我得到這個錯誤,告訴我數據庫是由另一個用戶獨佔打開的,或者我需要查看其數據的權限。但數據庫尚未創建! – sikas 2010-07-30 16:22:15

+0

我已經添加了一些註釋。 – Fionnuala 2010-07-30 17:30:26

+0

我以前試過這個,Remou。但它失敗了!我想我只會加密數據庫中的所有內容,或者看看如何使用資源...... – sikas 2010-07-30 17:56:19