赛迪网 >> 技术应用子站 >> ASP
怎样经由ADO来压缩Microsoft Access数据库
作者: 来源:365base 发布时间:2006.07.26
【Java专区】 【网络安全】 【网管专区】 【linux专区】 【数据库专区】 【进入论坛】 【IT博客】 
【Eclipse】  【PHP】  【DB2】  【Ajax】  【Struts】  【Spring】 

怎样经由ADO来压缩Microsoft Access数据库

HOWTO: Compacting Microsoft Access Database via ADO


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

The information in this article applies to:


ActiveX Data Objects (ADO), versions 2.1, 2.5, 2.6

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 pathsif 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 kbJET kbProvider kbVBp600 kbVC kbGrpDSVCDB kbGrpDSMDAC kbDSupport kbADO250 tslic_tslic

kbADO260

Issue type : kbhowto

Technology : kbAudDeveloper kbADOsearch kbADO210 kbADO250 kbADO260 kbOLEDBSearch kbOLEDBProvJet400

kbOLEDBProvSearch


IPTV:关注IPTV;报道技术;应用;方案
评论】 【推荐】 【 】 【打印】 【关闭
*姓  名: 更多资料 了解方案 认识厂商
*单位名称:
*联系电话:
*电子邮件:
    
◆ 相关文章
· 建立一个广告交换及跟踪系统 2004-04-05
· NET移植案例学习:建造Web站点(5) 2005-06-25
· .NET让新一代因特网变成现实(2) 2005-09-21
· 解析[8] :向浏览器发送内容 2005-02-08
· 解析[28] :向浏览器发送内容 2005-04-21