修复ACCESS数据库出错
由于ACCESS数据库断电时损坏了,使用ADO方法修复。该数据库版本是ACCESS2000。
代码如下:
::CoInitialize( NULL );
try
{
IJetEnginePtr jet(__uuidof(JetEngine));
jet->CompactDatabase("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Dispatch.mdb",
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb;Jet OLEDB:Engine Type=5");
MessageBox("Compact complete");
}
catch(_com_error &e)
{
MessageBox((LPCTSTR)e.Description(),"error",MB_OK);
}
::CoUninitialize();
可是修复后数据库中损坏的表变为MSysCompactError表,原因是什么?是不是版本的问题?
我的环境是XP SP2+VS2003+ACCESS2000
用ACCESS自带的压缩和修复数据库选项可以正常修复。。。