C# 创建密码保护的Access数据库

C# 创建密码保护的Access数据库,c#,ms-access,C#,Ms Access,将VisualStudio2010与C#WPF项目一起使用。我知道如何使用ADOX名称空间创建Access 2000-2003 db文件 ADOX.CatalogClass cat = new CatalogClass(); string str = "provider=Microsoft.Jet.OleDb.4.0;Data Source=" + _dbPath + ";"; cat.Create(str); cat = null; 连接并打开数据库: conn = new OleDbCon

将VisualStudio2010与C#WPF项目一起使用。我知道如何使用ADOX名称空间创建Access 2000-2003 db文件

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数据库?

如果您指的是数据库密码,而不是需要工作组文件的用户级安全性,则可以更改连接字符串以包括:

 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;
--

使用此处的信息:,但有一些小改动:

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数据库。

这是用于连接数据库的,创建时不起作用!我得到这个错误,它告诉我数据库是由另一个用户以独占方式打开的,或者我需要查看其数据的权限。但数据库尚未创建!!我以前试过这个,雷莫。但是失败了!!我想我只需要加密数据库中的所有内容,或者看看如何使用资源……数据库密码不是安全的,而是“安全剧场”——它们对于任何实际用途都是无用的,应该避免使用。剧场可能很有用。Access数据库密码是一种很好的方法,可以让您在篡改之前进行思考。我不同意一个例外。如果您使用MDB/ACCDB只是为了通过电子邮件或其他方法向某人发送数据,那么db密码比zip文件密码更好、更强。但在多个用户共享一个后端数据文件的生产应用程序中,使用数据库密码是非常愚蠢的。