2010-07-12 47 views
1

我想使用C#應用程序寫入訪問數據庫文件,可能使用WPF ...我也希望文件被密碼保護...是否有可能連接到它,而它是密碼保護或我應該刪除密碼?C#讀取/寫入訪問數據庫文件

+1

你的意思是一個Jet用戶級安全密碼,或數據庫密碼?如果前者,您可以使用ODBC或OLEDB。如果是後者,只有ODBC支持數據庫密碼 - 對於OLEDB來說,你倒黴了。數據庫密碼在任何情況下都會浪費時間,所以如果是數據庫密碼,您應該考慮徹底擺脫它。 – 2010-07-12 18:49:21

回答

2

使用的OleDbConnection( System.Data.OleDb)和正確的連接字符串。

Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:\ mydatabase.mdb; User Id = admin; Password =;

+0

OleDb conn = new OleDb(「Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:\ mydatabase.mdb; User Id = admin; Password =;」); ...我可以將數據源設置爲Data Source = mysource; ??但對於用戶名,它會是什麼?因爲訪問只需要密碼來鎖定文件... – sikas 2010-07-12 12:34:48

+0

默認的用戶名是'Admin' – 2010-07-12 15:19:01

1

是的,你可以使用密碼保護的MS Access數據庫。

在您連接MS Access數據庫的字符串中,您可以提供一個USERNAMEPASSWORD

根據其安全類型來實現,這裏有兩個樣本:

工作組安全使用系統數據庫

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\Server\Share\MyData.mdb;Jet OLEDB:System Database=\\Server\Share\MyData.mdw;USER=userid, PWD=password" 

隨着標準的MS Access安全:

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\Server\Share\MyData.mdb;User ID=userid;Password=password;" 
+0

我希望看到代碼連接,寫入過程和讀取過程(如果可能的話) – sikas 2010-07-12 12:29:39

+1

您的兩個示例的區別在於第一個示例指定了一個工作組文件,而第二個示例將使用定義爲該版本的默認工作組文件的Jet在那臺特定的計算機上。 – 2010-07-13 20:32:42

+0

@ David-W-Fenton沒錯。除了使用默認的工作組文件建議的內容之外,它還將使用該特定MDB的登錄信息,對不對? – 2010-07-14 11:51:24

2

我們的C#.Net4.0 Windows窗體到MS Access數據連接是這樣的:

using System.Data.OleDb; 
... 
private void DoIt() 
{ 
    OleDbConnection NamesDB = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=CyberSprocket.mdb"); 

    try 
    { 
    NamesDB.Open(); 
    } 
    catch (Exception ex) { 
     MessageBox.Show(ex.Message); 
     return; 
    } 
    OleDbCommand NamesCommand = new OleDbCommand("SELECT * FROM [names];", NamesDB); 
    OleDbDataReader dr = NamesCommand.ExecuteReader(); 

    string theColumns = ""; 
    for (int column = 0; column < dr.FieldCount; column++) 
    { 
    theColumns += dr.GetName(column) + " | "; 
    } 
    MessageBox.Show(theColumns); 

    NamesDB.Close(); 
}