关于ADOX的相关知识

作者:无名 - 数据库其它 -
转自:http://blog.junstudio.org/article.aspid=262

一、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”。有关建立库引用的详细信息,请参阅开发工具的文档。
二、ADOX 对象
Catalog 包含描述数据源模式目录的集合。
Column 表示表、索引或关键字的列。
Group 表示在安全数据库内有访问权限的组帐号。
Index 表示数据库表中的索引。
Key 表示数据库表中的主关键字、外部关键字或唯一关键字。
Procedure 表示存储的过程。
Table 表示数据库表,包括列、索引和关键字。
User 表示在安全数据库内具有访问权限的用户帐号。
View 表示记录或虚拟表的过滤集。
三、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 设置对象上组或用户的权限。 
四、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.1 创建数据库范例
如下代码显示如何通过 Create 方法创建新的 Jet 数据库。
Sub CreateDatabase()

 Dim cat As New ADOX.Catalog
 cat.Create "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\new.mdb"

End Sub
5.2 创建表范例
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
5.3 创建索引范例
如下代码演示如何创建新的索引。索引针对表的两个列建立。
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
5.4 创建关键字范例
如下代码演示如何创建新的外部关键字。假定已存在两个表(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

IT人知识库 该篇知识地址:http://www.itpeo.net/12848/383155.html





SQL server 2005的表分区

下面来说下,在SQL SERVER 2005的表分区里,如何对已经存在的有数据的表进行分区,其实道理和之前在http:/... ...

SQL 查询语句积累

2006-10-8表数据:tab1id    name  numA &... ...

MySQL mysqldump命令使用详解

经常地备份可以帮助防止宝贵数据地丢失;另外一个原因是,也许您希望导出数据来共享。 在这个信息技术不断成长的世界中,共享数... ...

使用SQL Mail收发和自动处理邮件中的扩展存储过程简介

使用SQL Mail收发和自动处理邮件中的扩展存储过程简介 SQL SERVER提供了通过EXCHANGE或OUTLOO... ...

怎么取得一个表的所有字段名用逗号分割

自从 Oracle 9i 开始,就可以通过SYS_CONNECT_BY_PATH 函数实现将从父节点到当前行内容以“pa... ...

Sql Server下数据库链接的使用方法

有时候我们希望在一个sqlserver下访问另一个sqlserver数据库上的数据,或者访问其他oracle数据库上... ...

SQL中代替Like语句的另一种写法

比如查找用户名包含有"c"的所有用户, 可以用 use mydatabase select ... ...

数据库分页查询语句数据库查询

先看看单条 SQL 语句的分页 SQL 吧。 方法1: 适用于 SQL Server 2000/2005 SELEC... ...

SQL Update多表联合更新的方法

有些时候我们需要同时更新多个表中的数据那么就需要用到下面方法了: (1) sqlite 多表更新方法 代码如下: //... ...

redis密码设置、访问权限控制等安全设置

redis作为一个高速数据库,在互联网上,必须有对应的安全机制来进行保护。 1.比较安全的办法是采用绑定IP的方式来进行... ...

怎么让SQL运行得更快

一、不合理的索引设计   ----例:表record有620000行,试看在不同的索引下,下面几个&... ...

ACCESS转SQLSERVER数据库的注意事项

比如下面这些... 1,对于日期字段字段  access表示为:#1981-28-12#  SQLSERVER2000表... ...

数据库设计技巧[转]

1. 原始单据与实体之间的关系  可以是一对一、一对多、多对多的关系。在一般情况下,它们是一对一的关系:即一张原始单据对... ...

rfedfre

iwms access与sql版的安装与转换

iwms4.5版后第一次运行时自动sql建表。下边为转换access版数据到sql数据库方法。 注意:从access转... ...

[转载]让SQL运行得更快

如何让你的SQL运行得更快     人们在使用SQL时往往会陷入一个误区,即太关注于所得的... ...

rfedfre

Access数据库升级为SQL数据库的注意事项和方法

很多Access和SQL Server开发人员都经常面临着将一个Access数据库升级到SQL Server数据库的问题... ...

Win2003系统安装SQL Sever2000后1433端口未开放的解释

用了几年的Windows2003了,也用了好多年SQL Server,不过这个问题倒是头次遇到。下午朋友遇到个现象,在W... ...

Access转SqlServer的注意事项

1、自动增加字段需要重写。在access中经常使用的自动编号字段,导入到mssql后,他并不是自增型的int,需要手工设... ...

数据库的设计方法、规范与技巧

一、数据库设计过程   数据库技术是信息资源管理最有效的手段。数据库设计是指对于一个给定的应用环境,构造最优的数据库模式... ...

数据库设计技巧奉送了

1. 设计数据库之前(需求分析阶段)     1) 理解客户... ...