您好:
我用ACCESS数据库编写程序,我发现,挣加几条数据后,数据库变的很大,而且数据删除后仍然没有变化,我有一个30多兆的数据库,里面根本没数据,经过ACCESS本身压缩后才几十K,但是我们不能要求用软件的人都安装ACCESS,并且懂得压缩。那么我们怎么做。才能解决问题呢?
我用ACCESS数据库编写程序,我发现,挣加几条数据后,数据库变的很大,而且数据删除后仍然没有变化,我有一个30多兆的数据库,里面根本没数据,经过ACCESS本身压缩后才几十K,但是我们不能要求用软件的人都安装ACCESS,并且懂得压缩。那么我们怎么做。才能解决问题呢?
解决方案 »
- 基于文本文档的员工信息管理系统(简单VC++应用)
- c++ 连接access数据库
- 如何设置ListBox中每一项string的颜色
- VC7编译速度的问题????????????????
- 讨论一下:钩子(HOOK)有这么神气的力量吗?
- AddPrinter函数使用
- 请教:内核对象的伪句柄是怎么回事?
- 求教c++的基础性问题
- 拉动 CSplitterWnd 的分割条的消息是什么?
- 用RetrieveUrlCacheEntryStream()来查找IE临时文件时,中文文件、目录不能识别!有什么办法解决!
- 如何修改ACCESS中的指定的一条记录,ADO!
- 如何改变Picture控件,使其改变为自定义颜色的Rectangle
CString strDatabaseName=strWorkDir+lpDataBaseFileName;
CString strDestDatabaseName=strWorkDir+"\\Tmp.mdb"; TRY
{
CFile::Remove( (LPCTSTR)strDestDatabaseName );
}
CATCH( CFileException , e)
{
#ifdef _DEBUG
afxDump << "File " << ((LPCTSTR)strDestDatabaseName) << " cannot be removed\n";
#endif
e->Delete();
}
END_CATCH CString strConnetStringhead=_T("Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=xxxxxx; Data Source=");
CString strConnStr=strConnetStringhead+strDatabaseName;
CString strDestStr=strConnetStringhead+strDestDatabaseName+_T(";Jet OLEDB:Engine Type=5");
try
{
IJetEnginePtr jet(__uuidof(JetEngine));
jet->CompactDatabase( (LPCTSTR)strConnStr, (LPCTSTR)strDestStr);
}
catch(_com_error e)
{
MessageBox(e.Description(), "数据库操作错误",MB_ICONSTOP) ;
((CNetDocCabinetApp *)AfxGetApp())->ConnectDBS();
return;
}
CFile::Remove((LPCTSTR)strDatabaseName);
CFile::Rename((LPCTSTR)strDestDatabaseName,strDatabaseName);