轉自:http://blog.junstudio.org/article.asp?id=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