vc中如何使用ADO压缩和修复Access数据库文件???

wwsatan 2001-09-18 05:40:32
一个项目,数据库在vc下用ADO开发,库是Access的.mdb文件。现在增加对其进行压缩和修复的功能,DAO下有相关的类和函数,ADO下没找到呀,有这方面经验的大虾,
快给我回复吧,本人email:wwsatan@263.net


来信必复!!!
...全文
118 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
蒋晟 2001-09-18
  • 打赏
  • 举报
回复
HOWTO: Compacting Microsoft Access Database via ADO
ID: Q230501


--------------------------------------------------------------------------------
The information in this article applies to:

ActiveX Data Objects (ADO), version 2.1
Microsoft OLE DB Provider for Jet, version 4.0

--------------------------------------------------------------------------------


SUMMARY
Although ADO specification does not provide objects to compact or repair Microsoft Access databases, this capability can be achieved by using the ADO extension: Microsoft Jet OLE DB Provider and Replication Objects (JRO). This capability was implemented for the first time in the JET OLE DB Provider version 4.0 (Msjetoledb40.dll) and JRO version 2.1 (Msjro.dll). These DLL files are available after the install of MDAC 2.1. You can download the latest version of MDAC from the following Web site:


Universal Data Access Web Site



MORE INFORMATION
To repair and compact an Access database using ADO, MDAC 2.1 or later must be properly installed on the computer. The following are the main steps to compact a Microsoft Access database using Visual Basic and Visual C++:

Visual Basic: Compacting an Access Database via ADO
In the Visual Basic IDE, on the Projects menu, click References.


Add Microsoft Jet and Replication Objects X.X library, where (X.X is greater than or equal to 2.1).


Add the following lines of code to Visual Basic, replacing the data source and destination database paths if needed:


Dim jro As jro.JetEngine
Set jro = New jro.JetEngine
jro.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\nwind2.mdb", _
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\abbc2.mdb;Jet OLEDB:Engine Type=4"



NOTE: In DAO 3.60, the RepairDatabase method is no longer available. The above code shows the use of the CompactDatabase method. This method replaces the DAO 3.5 RepairDatabase method.
Visual C++: Compacting an Access Database via ADO
Besides #import, the Msado15.dll (MDAC2.1), add the following #import statement to generate the wrapper classes for JRO to your .cpp classes (alternatively, you can generate the wrapper classes more efficiently by using the no_implementation and implementation_only attributes of the #import pre-processor statement):

#import "C:\PROGRAM FILES\COMMON FILES\System\ado\MSJRO.DLL" no_namespace



Add the following (specifying your own source and destination database paths) to the .cpp file where you want to compact the database:

...
try
{
IJetEnginePtr jet(__uuidof(JetEngine));
jet->CompactDatabase("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\nwind2.mdb", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\abbc.mdb;Jet OLEDB:Engine Type=4");
}
catch(_com_error &e)
{
::MessageBox(NULL, (LPCTSTR)e.Description( ), "", MB_OK) ;
}



NOTE: The Jet OLEDB:Engine Type=4 is only for Jet 3.x format MDB files. If this value is left out, the database is automatically upgraded to the 4.0 version (Jet OLEDB:Engine Type=5). See the following table for appropriate values for Jet OLEDB:Engine Type:
Jet OLEDB:Engine Type Jet x.x Format MDB Files
1 JET10
2 JET11
3 JET2X
4 JET3X
5 JET4X





REFERENCES
For additional information, please see the following article in the Microsoft Knowledge Base:

Q230496 Compacting Microsoft Access database via OLE DB

Additional query words: CompactDatabase RepairDatabase reindex

Keywords : kbADO210 kbDatabase kbJET kbProvider kbVBp600 kbVC kbGrpVCDB kbGrpMDAC
Version : WINDOWS:2.1,4.0
Platform : WINDOWS
Issue type : kbhowto
Technology :


Last Reviewed: August 11, 1999
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.




--------------------------------------------------------------------------------
Send feedback to MSDN.Look here for MSDN Online resources.

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧