我正在编写一个C#程序,除其他事项外,该程序还需要将受密码保护的.mdb Access数据库转换为受密码保护的.accdb文件。该函数看起来类似于:
public int M2AConvert( string password, string newPath, stringOldPath )
我现在拥有的代码是:
Microsoft.Office.Interop.Access.Application accessApp = new
Microsoft.Office.Interop.Access.Application();
accessApp.Visible = true;
string sourceFile = oldPath;
string desFile = newPath;
accessApp.SysCmd((Microsoft.Office.Interop.Access.AcSysCmdAction)603, sourceFile, desFile);
这似乎不适用于受密码保护的文件,因此很可能是问题。
任何帮助将不胜感激。
答案 0 :(得分:0)
在DbEngine中使用以下代码,以允许通过密码进行转换:
using Microsoft.Office.Interop.Access.Dao;
...
DBEngine daoEng = new DBEngine();
daoEng.CompactDatabase(dbNameSrc, dbNameDest, LanguageConstants.dbLangGeneral, dbVersion, pwd);
其中dbVersion是.mdb到.accdb的dbVersion120。可以使用其他dbVersion类型在.accdb和.mdb之间进行转换,但是请记住dbVersion40用于Jet 4.0,它是.mdb文件提供程序的最新版本。
此处列出了所有dbVersion转换类型:Microsoft Docs