CompactDatabase 有什么作用
最近维护一个老系统看到代码里面有这样一段程序,
用户A和用户B同时登陆到系统,当A先退出的时候就报异常。(关闭程序)
跟踪代码如下:
不知道这个有什么功能,希望高手指点。一个用户使用登陆的时候没有问题。
BOOL MDBCompact(CString szFilePath)
{
CString szProvider = "Provider=Microsoft.Jet.OLEDB.4.0;";
CString szDataSource = "Data Source=";
CString szOJetOLEDB = "Jet OLEDB:Database Password= ";
CString szTJetOLEDB = "Jet OLEDB:Engine Type=5;Jet OLEDB:Database Password= ";
int nIndex;
int strLength = szFilePath.GetLength();
for(int i=strLength-1; i>=0; i--)
{
if(szFilePath[i] == '\\')
{
nIndex = i;
break;
}
}
CString szTmpFilePath = szFilePath.Left(nIndex+1);
szTmpFilePath += "GakkenTmp.mdb";
_bstr_t szOrignalInfo(szProvider+szDataSource+szFilePath+";"+szOJetOLEDB);
_bstr_t szTargetInfo(szProvider+szDataSource+szTmpFilePath+";"+szTJetOLEDB);
CFile OrignalFile;
CFile TargetFile;
try
{
IJetEnginePtr jet(_uuidof(JetEngine));
jet->CompactDatabase(szOrignalInfo,szTargetInfo);
OrignalFile.Remove(szFilePath);
TargetFile.Rename(szTmpFilePath,szFilePath);
}
catch (_com_error &e)
{
::MessageBox(NULL,(LPCTSTR)e.Description(),"",MB_OK);
return FALSE;
}
return true;
}