1、ADOX 概述 
Microsoft ActiveX Data Objects Extensions for Data Definition Language and Security (ADOX) 是对 ADO 对象和编程模型的扩展。ADOX 包括用于模式创建和修改的对象,以及安全性。由于它是基于对象实现模式操作,所以用户可以编写对各种数据源都能有效运行的代码,而与它们原始语法中的差异无关。

ADOX 是核心 ADO 对象的扩展库。它显露的其他对象可用于创建、修改和删除模式对象,如表格和过程。它还包括安全对象,可用于维护用户和组,以及授予和撤消对象的权限。

要通过开发工具使用 ADOX,需要建立对 ADOX 类型库的引用。对 ADOX 库的说明为“Microsoft ADO Ext. for DDL and Security.”。ADOX 库文件名为“Msadox.dll”,程序 ID (ProgID) 为“ADOX”。有关建立库引用的详细信息,请参阅开发工具的文档。

2、ADOX 对象 
Catalog        包含描述数据源模式目录的集合。 
Column         表示表、索引或关键字的列。 
Group          表示在安全数据库内有访问权限的组帐号。 
Index          表示数据库表中的索引。 
Key            表示数据库表中的主关键字、外部关键字或唯一关键字。 
Procedure       表示存储的过程。 
Table         表示数据库表,包括列、索引和关键字。 
User          表示在安全数据库内具有访问权限的用户帐号。 
View          表示记录或虚拟表的过滤集。 
3、ADOX 方法 
Append(Columns) 将新的 Column 对象添加到 Columns 集合。 
Append(Groups) 将新的 Group 对象添加到 Groups 集合。 
Append(Indexes) 将新的 Index 对象添加到 Indexes 集合。 
Append(Keys) 将新的 Key 对象添加到 Keys 集合。 
Append(Procedures) 将新的 Procedure 对象添加到 Procedures 集合。 
Append(Tables) 将新的 Table 对象添加到 Tables 集合。 
Append(Users) 将新的 User 对象添加到 Users 集合。 
Append(Views) 将新的 View 对象添加到 Views 集合。 
ChangePassword 更改用户帐号的密码。 
Create 创建新的目录。 
Delete 删除集合中的对象。 
GetObjectOwner 返回目录中对象的拥有者。 
GetPermissions 获得对象上组或用户的权限。 
Item 按名称或序号返回集合的指定成员。 
Refresh 更新集合中的对象,以反映针对提供者可用的和指定的对象。 
SetObjectOwner 指定目录中对象的拥有者。 
SetPermissions 设置对象上组或用户的权限。 
4、ADOX 属性 
ActiveConnection 指示目录所属的 ADO Connection 对象。 
Attributes 描述列特性。 
Clustered 指示索引是否被分簇。 
Command 指定可用于创建或执行过程的 ADO Command 对象。 
Count 指示集合中的对象数量。 
DateCreated 指示创建对象的日期。 
DateModified 指示上一次更改对象的日期。 
DefinedSize 指示列的规定最大大小。 
DeleteRule 指示主关键字被删除时将执行的操作。 
IndexNulls 指示在索引字段中有 Null 值的记录是否有索引项。 
Name 指示对象的名称。 
NumericScale 指示列中数值的范围。 
ParentCatalog 指定表或列的父目录以便访问特定提供者的属性。 
Precision 指示列中数据值的最高精度。 
PrimaryKey 指示索引是否代表表的主关键字。 
RelatedColumn 指示相关表中相关列的名称(仅关键字列)。 
RelatedTable 指示相关表的名称。 
SortOrder 指示列的排序顺序(仅索引列)。 
Type(列) 指示列的数据类型。 
Type(关键字) 指示关键字的数据类型。 
Type(表) 指示表的类型。 
Unique 指示索引关键字是否必须是唯一的。 
UpdateRule 指示主关键字被更新时会执行的操作。

5、范例 
一、创建数据库范例 
如下代码显示如何通过 Create 方法创建新的 Jet 数据库。 
ASP代码: 
----------------------------------------------------------- 
set cat=server.createobject("ADOX.Catalog") 
    cat.Create "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\new.mdb"

VB代码 
-------------------------------- 
Sub CreateDatabase() 
              'Dim cat As New ADOX.Catalog 
       ' cat.Create ""Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\new.mdb""

End Sub 
二、创建表范例ASP代码: 
-------------<% 
    set cat=server.createobject("ADOX.Catalog") 
    dbpath=server.mappath("/shit/date/new.mdb")    cat.Create "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&dbpath 
    set    tbl=Server.createobject("ADOX.Table") 
          tbl.Name     =     "MyTable" 
    tbl.Columns.Append     "Column1",     3           'adInteger 
          tbl.Columns.Append     "Column2",     3           'adInteger 
          tbl.Columns.Append     "Column3",     202       ,50     'adVarWChar 
          cat.Tables.Append     tbl 
    %> 
VB代码:--------------- 
Sub CreateTable()

Dim tbl As New Table 
        Dim cat As New ADOX.Catalog

'打开目录。 
        ' 打开目录。 
        cat.ActiveConnection = _ 
           ""Provider=Microsoft.Jet.OLEDB.4.0;"" & _ 
           ""Data Source=c:\Program Files\Microsoft Office\"" & _ 
           ""Office\Samples\Northwind.mdb;""

tbl.Name = ""MyTable"" 
        tbl.Columns.Append ""Column1"", adInteger 
        tbl.Columns.Append ""Column2"", adInteger 
        tbl.Columns.Append ""Column3"", adVarWChar, 50 
        cat.Tables.Append tbl

End Sub

三、创建索引范例 
如下代码演示如何创建新的索引。索引针对表的两个列建立。

Sub CreateIndex()

Dim tbl As New Table 
        Dim idx As New ADOX.Index 
        Dim cat As New ADOX.Catalog

' 打开目录。 
        ' 打开目录。 
        cat.ActiveConnection = _ 
           ""Provider=Microsoft.Jet.OLEDB.4.0;"" & _ 
           ""Data Source=c:\Program Files\Microsoft Office\"" & _ 
           ""Office\Samples\Northwind.mdb;""

' 定义表并将其追加到目录 
        tbl.Name = ""MyTable"" 
        tbl.Columns.Append ""Column1"", adInteger 
        tbl.Columns.Append ""Column2"", adInteger 
        tbl.Columns.Append ""Column3"", adVarWChar, 50 
        cat.Tables.Append tbl

' 定义多列索引 
        idx.Name = ""multicolidx"" 
        idx.Columns.Append ""Column1"" 
        idx.Columns.Append ""Column2""

' 将索引追加到表上 
        tbl.Indexes.Append idx

End Sub 
四、创建关键字范例 
如下代码演示如何创建新的外部关键字。假定已存在两个表(Customers 和 Orders)。

Sub CreateKey()

Dim kyForeign As New ADOX.Key 
        Dim cat As New ADOX.Catalog

cat.ActiveConnection = ""Provider=Microsoft.Jet.OLEDB.4.0;"" & _ 
           ""Data Source=c:\Program Files\Microsoft Office\"" & _ 
           ""Office\Samples\Northwind.mdb;""

kyForeign.Name = ""CustOrder"" 
        kyForeign.Type = adKeyForeign 
        kyForeign.RelatedTable = ""Customers"" 
        kyForeign.Columns.Append ""CustomerId"" 
        kyForeign.Columns(""CustomerId"").RelatedColumn = ""CustomerId"" 
        kyForeign.UpdateRule = adRICascade 
        cat.Tables(""Orders"").Keys.Append kyForeign 
End Sub 
       [/code]

Type   属性(列)

指示列的数据类型

设置和返回值

设置或返回长整型值,该值是如下常量之一:

常量   说明 
adTinyInt   精确的数字值,精度为小数点后   3   位。关于该类型的详细资料,请参阅“OLE   DB   程序员参考”。 
AdSmallInt   精确数字值,精度为小数点后   5   位。关于该类型的详细资料,请参阅“OLE   DB   程序员参考”。 
AdInteger   精确数字值,精度为小数点后   10   位。关于该类型的详细资料,请参阅“OLE   DB   程序员参考”。 
AdBigInt   精确数字值,精度为小数点后   19   位。关于该类型的详细资料,请参阅“OLE   DB   程序员参考”。 
AdUnsignedTinyInt   无符号的   adTinyInt。 
AdUnsignedSmallInt   无符号的   adSmallInt。 
AdUnsignedInt   无符号的   adInteger。 
AdUnsignedBigInt   无符号的   adBigInt。 
AdSingle   单精度浮点数。 
AdDouble   双精度浮点数。 
AdCurrency   货币类型。关于该类型的详细资料,请参阅“OLE   DB   程序员参考”。 
AdDecimal   变体型十进制类型。关于该类型的详细资料,请参阅“OLE   DB   程序员参考”。 
AdNumeric   数值类型。关于该类型的详细资料,请参阅“OLE   DB   程序员参考”。 
AdBoolean   变体布尔类型。0   为假而   ~0   为真。 
AdUserDefined   用户定义的变量长度数据类型。关于该类型的详细资料,请参阅“OLE   DB   程序员参考”。 
AdVariant   自动变体型。关于该类型的详细资料,请参阅“OLE   DB   程序员参考”。 
AdGuid   全域唯一标识符。关于该类型的详细资料,请参阅“OLE   DB   程序员参考”。 
AdDate   自动日期。关于该类型的详细资料,请参阅“OLE   DB   程序员参考”。 
AdDBDate   数据库日期数据结构。关于该类型的详细资料,请参阅“OLE   DB   程序员参考”。 
AdDBTime   数据库时间数据结构。关于该类型的详细资料,请参阅“OLE   DB   程序员参考”。 
AdDBTimestamp   数据库时间戳结构。关于该类型的详细资料,请参阅“OLE   DB   程序员参考”。 
AdBSTR   BSTR   的指针。关于该类型的详细资料,请参阅“OLE   DB   程序员参考”。 
AdChar   定长字符串。 
AdVarChar   变长字符串。 
AdLongVarChar   长变长字符串。 
AdWChar   宽定长字符串。 
AdVarWChar   宽变长字符串。 
AdLongVarWChar   长、宽变长字符串。 
AdBinary   定长二进制数据。 
AdVarBinary   变长二进制数据。 
AdLongVarBinary   长变长二进制数据。

说明

默认值是   adVarWChar。

在   Column   对象追加到集合或

ADOX的更多相关文章

  1. access生成sql脚本,通过VBA调用ADOX

    access生成sql脚本,通过VBA调用ADOX. 使用 MS Access 2016 的VBA,读取mdb文件中的所有表结构(数据类型/长度/精度等),生成对应的SQL create table语 ...

  2. 用adox 取 access 自增列

    百度很久 最后在 (.NET2.0下用ADOX动态创建ACCESS数据库(C#)) http://blog.csdn.net/black4371/article/details/4423739 找到了 ...

  3. C++: read access data using ADOX.DLL and System::Data::OleDb

    #pragma once #include "Form2.h" namespace cdemo { using namespace System; using namespace ...

  4. 使用 ADOX 将 Table 添加到 Catalog 时报“类型无效”的原因和解决方法

    http://blog.csdn.net/kfhzy/article/details/6020283 http://blog.csdn.net/kfhzy/article/details/602054 ...

  5. 无法嵌入互操作类型“ADOX.CatalogClass”。请改用适用的接口。

    编译环境:vs2013 系统报错:无法嵌入互操作类型"ADOX.CatalogClass".请改用适用的接口. 解决方法:选中项目中引入的dll(本例中为Microsoft ADO ...

  6. ADOX创建ACCESS数据库列名的数据类型

    Type   属性             指示   Parameter.Field   或   Property   对象的操作类型或数据类型. 设置和返回值 设置或返回下列   DataTypeE ...

  7. ADOX创建ACCESS 表时,几个附加属性

     中文  英文 允许空字符串 Jet OLEDB:Allow Zero Length Unicode压缩 Jet OLEDB:Compressed UNICODE Strings 有效性规则 Jet ...

  8. 创建ACCESS数据库,并且创建表和数据。重点:关闭ACCESS数据库引用

    /// <summary> /// 创建ACCESS数据库,并且创建表和数据 /// </summary> /// <param name="dictTable ...

  9. Convert Excel data to MDB file

    所需组件: microsoft ado ext. 2.8 for ddl and security 或者更新的组件. 添加: using ADOX;using System.Runtime.Inter ...

随机推荐

  1. svn如何提取文件更新列表

    eclipse svn插件site-1.10.1 Slik-Subversion-1.8.0-x64.msi  ---可以使用svn命令,如svn status 显示修改过的本地文件,如下示例: I: ...

  2. UVa409_Excuses, Excuses!(小白书字符串专题)

    解题报告 题意: 找包括单词最多的串.有多个按顺序输出 思路: 字典树爆. #include <cstdio> #include <cstring> #include < ...

  3. JQUERY AJAX无刷新异步上传文件

    AJAX无刷新上传文件并显示 http://blog.csdn.net/gao3705512/article/details/9330637?utm_source=tuicool jQuery For ...

  4. 正确理解java编译时,运行时以及构建时这三个概念

    Java中的许多对象(一般都是具有父子类关系的父类对象)在运行时都会出现两种类型:编译时类型和运行时类型,例如:Person person = new Student();这行代码将会生成一个pers ...

  5. iOS-实现最简单的画线功能 . 转

    前提:CoreGraphics.framework - (void)viewDidLoad { [super viewDidLoad]; UIImageView *imageView=[[UIImag ...

  6. 细说Unity3D(一)——移动平台动态读取外部文件全解析

    前言: 一直有个想法,就是把工作中遇到的坑通过自己的深挖总结成一套相同问题的解决方案供各位同行拍砖探讨.眼瞅着2015年第一个工作日就要来到了,小匹夫也休息的差不多了,寻思着也该写点东西活动活动大脑和 ...

  7. JAVA nio 2 和 Path 类简介

    想要初步了解 NIO.2 API,也就是通常所说的“JSR203: More New I/O APIs for the Java Platform”,最好的切入点就是新的抽象类 java.nio.fi ...

  8. Uber分布式追踪系统Jaeger使用介绍和案例

    原文:Uber分布式追踪系统Jaeger使用介绍和案例[PHP Hprose Go] 前言   随着公司的发展,业务不断增加,模块不断拆分,系统间业务调用变得越复杂,对定位线上故障带来很大困难.整个调 ...

  9. 兼容的动态加载JS【原】

    兼容的动态加载JS 屌丝就是悲剧,五一还得宅家里写程序专研技术. 说起动态加载JS,搞web的肯定不陌生,著名的YUI库就有强大的模块化的动态加载JS机制.在代码量不断庞大的今天,动态加载JS作用还是 ...

  10. C++中new的用法及显示调用析构函数

    最近被问到了C++内存池的问题,其中不免涉及到在指定内存地址调用对象构造函数以及显示调用对象析构函数的情况. C++中new的用法 new是C++中用于动态内存分配的运算符,在C语言中一般使用mall ...