2010-07-12 42 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(); 
}