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;
} --------------------编程问答-------------------- 通过ado访问数据库
--------------------编程问答-------------------- 压缩数据库,将旧库的数据压缩到新库 --------------------编程问答-------------------- 压缩数据库。
出于性能的考虑,数据库中记录删除、更新都只是简单将原有位置标记为没有数据,而不会回收利用。所以时间一长,数据库就会松散地占用很多空间。
压缩数据库可以整理数据,释放无用的空间。
补充:.NET技术 , VC.NET