C# 打开受密码保护的.mdb文件

C# 打开受密码保护的.mdb文件,c#,ms-access,database-connection,C#,Ms Access,Database Connection,dd.TableDefs上的编译器错误…为了使此代码正常运行,我应该修改什么?看起来问题是我试图使用DAO&Microsoft.Ace.OLEDB,但我不知道如何解决。准确的误差是 Error 27 Use of unassigned local variable 'dd' DAO.Database dd; DAO.TableDef tdf1; DAO.DBEngine db = new DAO.DBEngine(); string newName = "Just_Auto_Li

dd.TableDefs上的编译器错误…为了使此代码正常运行,我应该修改什么?看起来问题是我试图使用DAO&Microsoft.Ace.OLEDB,但我不知道如何解决。准确的误差是

Error   27  Use of unassigned local variable 'dd'   


DAO.Database dd;
DAO.TableDef tdf1;
DAO.DBEngine db = new DAO.DBEngine();
string newName = "Just_Auto_Linked_In";
string SQLName = "Just_Auto_Linked_In";
string oledbConnectString =
"Provider=Microsoft.ACE.OLEDB.12.0;Data   Source=C:\\Databases\\Testing.mdb;" +
"Jet OLEDB:Database Password=foxtrotcharliealpha;";

using (OleDbConnection connection = new OleDbConnection(oledbConnectString))
{
connection.Open();
string[] tableNames = new string[1] { "Magnus", };
for (int q = tableNames.GetLowerBound(0); q <= tableNames.GetUpperBound(0); q++)
{
    foreach (DAO.TableDef tabledef in dd.TableDefs)
    {
        string viewName = tableNames[q];
        if (tabledef.Name == viewName) { found = true; }
        try { if (found) { dd.TableDefs.Delete(viewName); } }
        catch { }
    }
}
tdf1 = dd.CreateTableDef(newName);
tdf1.Connect = cs1;
tdf1.SourceTableName = SQLName;
dd.TableDefs.Append(tdf1);
}

这是VBA,但您应该能够相对容易地将其移植到C

Sub OpenPwdProtectedDB()
Dim db As DAO.Database
Dim ws As DAO.Workspace
Set ws = DBEngine.WorkSpaces(0)
Set db = ws.OpenDatabase("H:\Database\database.mdb", False, False, "MS Access;PWD=password")
'Do what you want to here
'
'
'
'
db.Close
End Sub

确切的错误是什么?@bokibeg当然我会省略相关信息。更新了原始帖子。好的,我看到问题了,您正在调用
dd
,它被声明为
DAO.Database dd
,但它没有分配到任何地方,它是
null
。不幸的是,我已经很久没有使用DAO了,所以我甚至不知道DAO数据库是如何实例化的。@bokibeg经过几个小时的谷歌搜索,我看到了如何使用DAO打开数据库,而不是使用密码打开数据库,所以我几乎仍然处于同样的困境。代码行读取“Set ws=DBEngine.Workspace(0)”“这的C#等价物是什么?我好像弄不懂那一块。
Sub OpenPwdProtectedDB()
Dim db As DAO.Database
Dim ws As DAO.Workspace
Set ws = DBEngine.WorkSpaces(0)
Set db = ws.OpenDatabase("H:\Database\database.mdb", False, False, "MS Access;PWD=password")
'Do what you want to here
'
'
'
'
db.Close
End Sub