怎样经由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

时间: 2024-11-02 23:04:23

怎样经由ADO来压缩Microsoft Access数据库的相关文章

使用 ADO.NET 解锁 Microsoft Access 数据(1)

access|ado|数据 使用 ADO.NET 解锁 Microsoft Access 数据 Paul CornellMicrosoft Corporation 2001 年 12 月 6 日 Microsoft Office 提供了多种存储和管理数据的功能和工具,例如,数据访问对象 (DAO).ActiveX 数据对象 (ADO).Microsoft Word 邮件合并.Microsoft Excel Web 查询.Microsoft Query.数据访问页.Microsoft Access

使用ADO.NET解锁 Microsoft Access数据(一)

access|ado|数据 使用ADO.NET解锁 Microsoft Access数据 作者:微软中国   Microsoft Office 提供了多种存储和管理数据的功能和工具,例如,数据访问对象 (DAO).ActiveX 数据对象 (ADO).Microsoft Word 邮件合并.Microsoft Excel Web 查询.Microsoft Query.数据访问页.Microsoft Access 数据项目.Office 数据连接.Office 数据链接等等.而 Microsoft

Microsoft Access 数据库常规规格

access|数据|数据库 Microsoft Access 数据库常规规格属性 最大值 Microsoft Access 数据库 (.mdb) 文件大小 2 G 字节.不过,由于数据库可以包括其他文件中的链接表,所以它的大小仅实际上只受可用存储空间大小的限制. 数据库中的对象个数 32,768 模块(包括 HasModule 属性为 True 的窗体和报表) 1,000 对象名称的字符数 64 密码的字符个数 14 用户名或组名的字符个数 20 用户个数 255 Microsoft Acces

Microsoft Access 数据库常规规格_Access

Microsoft Access 数据库 (.mdb) 文件大小2 G 字节.不过,由于数据库可以包括其他文件中的链接表,所以它的大小仅实际上只受可用存储空间大小的限制. 数据库中的对象个数32,768 模块(包括 HasModule 属性为 True 的窗体和报表)1,000 对象名称的字符数64 密码的字符个数14 用户名或组名的字符个数20 用户个数255  Microsoft Access 数据库表规格 表名的字符个数64 字段名的字符个数64 表中字段个数255 打开表的个数2,048

pb中压缩整理access数据库文件(mdb)

access|数据|数据库|压缩          其实实现方法别的语言已经很明确了,我这里只是用pb整理了一下,方便需要这个功能的同学.        下面直接给出方法函数:        1.申明外部函数,用来取系统的临时路径.  FUNCTION ulong GetTempPath(ulong nBufferLength,ref string lpBuffer) LIBRARY "kernel32.dll" ALIAS FOR "GetTempPathA"  

使用 ADO.NET 解锁 Microsoft Access 数据(2)

access|ado|数据 使用 DataReader 对象以仅向前移动的.只读的格式访问数据很多时候,您只是希望简单地浏览数据,而并不需要在数据间来回浏览,也不需要更改数据(我们将此称为"流水数据").ADO.NET 的 DataReader 对象是专门为此设计的.下面是我编写的一段示例代码,可以逐个读取连接的数据库中的所有选定数据: ' Visual Basic .NET 代码.' 控制台应用程序.' 引用:'   System'   System.Data'   System.X

使用ADO.NET解锁 Microsoft Access数据(二)

access|ado|数据 数据表单向导 Visual Studio .NET 数据表单向导允许您快速连接到数据库,并生成简单的用户界面,用于显示数据并与数据进行交互.要使用数据表单向导,请执行以下步骤: 在 Windows 应用程序项目中,在 Project(项目)菜单上,单击 Add Windows Form(添加 Windows 窗体). 在 Templates(模板)窗格中,单击 Data Form Wizard(数据窗体向导),单击 Open(打开),然后单击 Next(下一步). 在

Microsoft Access 数据库引擎找不到对象“Sheet1$”。

问题描述 麻烦各位大神解答下,文件及该Sheet1都存在,名字也一模一样,但还是提示找不到对象,另外我发现DataSource的文件名为相对路径,DataSource=uploadexcel.xls,是不是和这个有关系,以下是代码,请帮忙看下,是什么问题?应该如何改进?stringsConnectionString="Provider=Microsoft.ACE.OLEDB.12.0;"+"DataSource="+uploadexcel.PostedFile.Fi

如何使用ADO來压缩或修复Microsoft Access文件

 以前使用 DAO 時,Microsoft 有提供 CompactDatabase Method 來压缩 Microsoft Access 文件,RepairDatabase Method 來修复损坏的 Microsoft Access 文件,.可是自从 ADO 出來之后,好像忘了提供相对的压缩及修复 Microsoft Access 文件的功能. 現在 Microsoft 发现了这个问题了,也提供了解決方法,不过有版本上的限制!限制說明如下: ActiveX Data Objects (ADO