1,178
社区成员
发帖
与我相关
我的任务
分享
bool __fastcall CrnCompactMDB(String strMdbFile, String strOldPwd, String strNewPwd)
{
String strTmpFile = ChangeFileExt(strMdbFile, ".tmp");
String strOldProvide, strNewProvide;
strOldProvide.sprintf(
"Provider=Microsoft.Jet.OLEDB.4.0;"
"Data Source=%s;"
"Jet OLEDB:Database Password=%s", strMdbFile.c_str(), strOldPwd.c_str());
strNewProvide.sprintf(
"Provider=Microsoft.Jet.OLEDB.4.0;"
"Data Source=%s;"
"Jet OLEDB:Database Password=%s", strTmpFile.c_str(), strNewPwd.c_str());
bool bSuccess(false);
Variant vAdoObj;
try
{
if(FileExists(strTmpFile))
DeleteFile(strTmpFile);
vAdoObj = Variant::CreateObject("JRO.JetEngine");
vAdoObj.OleProcedure("CompactDatabase",
WideString(strOldProvide), WideString(strNewProvide));
if(FileExists(strMdbFile))
DeleteFile(strMdbFile);
RenameFile(strTmpFile, strMdbFile);
bSuccess = true;
}
__finally
{
vAdoObj.Clear();
vAdoObj = Unassigned;
}
return bSuccess;
}