ADOX 是 ActiveX Data Objects Extensions for Data Definition Language and Security,它是ADO的一个扩展,专门用于数据定义语言(DDL)和安全性。ADOX 提供了一组对象,允许用户通过编程方式创建、修改或删除数据库对象,如表、视图、用户、组等。在使用ADOX时,确保已经安装了相应的数据提供者,并且具有对数据库进行操作的权限。ADOX通常用于更高级的数据库管理和安全性任务。
ADOX是一个功能强大的工具,适用于需要通过编程方式进行数据库架构和安全操作的开发者。在使用ADOX时注意的一些关键点:
(1)提供者支持:使用ADOX之前,需要确保数据库提供者支持ADOX对象。不同的数据库(如Microsoft Access、SQL Server等)可能支持不同级别的ADOX功能。
(2)编程接口:ADOX提供了丰富的对象模型,包括但不限于Catalog、Table、Column、Index、User 和 Group 等。
(3)安全性:ADOX允许开发者通过编程方式管理数据库的安全性,例如添加或删除用户和组,以及设置权限。
(4)事务处理:ADOX操作可以包含在事务中,这意味着你可以将多个操作作为一个单元执行,以确保数据库的完整性。
(5)错误处理:在使用ADOX进行数据库操作时,应该实现适当的错误处理逻辑,以便在操作失败时进行恢复或回滚。
(6)ADOX与ADO:ADOX对象通常与ADO对象一起使用,ADO用于数据访问和操作,而ADOX用于结构和安全相关的任务。
(7)安装和配置:在使用ADOX之前,确保系统中已安装了适当的ADO和ADOX库,并且配置了正确的注册表项。
(8)示例代码:在VB6或VBS等其它支持ADO的编程环境中,可以使用ADOX对象来执行数据库结构操作,例如在VB6中:
Dim cat As New ADOX.Catalog
Dim tbl As New ADOX.Table
Dim col As New ADOX.Column
‘ 设置连接字符串
cat.ActiveConnection = “Provider=…;Data Source=…;User ID=…;Password=…”
‘ 使用ADOX创建新表
With tbl
.Name = “NewTable”
Columns.Append col
cat.Tables.Append tbl
End With
‘ 清理
Set tbl = Nothing
Set cat = Nothing
【VBS对象之ADOX-ADOX.Table 对象】
CreateObject(“ADOX.Table”)
ADOX.Table对象用于访问数据库的表
可以从Tables对象集合中提取或枚举Table对象
ADOX.Table对象有9个属性0个方法0个事件
(一)属性:
Columns 表的字段(只读)。类型:Columns对象
DateCreated 表的创建时间(只读)。类型:Date
DateModified 表的最后一次修改时间(只读)。类型:Date
Indexes 表的索引(只读)。类型:Indexes对象
Keys 表的键(只读)。类型:Keys对象
Name 表的名称。类型:String
ParentCatalog 所属的Catalog对象。类型:Catalog对象
Properties 表的属性(只读)。类型:Properties对象
Type 表的类型(只读)。类型:String
(二)示例:
‘示例:Table对象,Access数据库
Option Explicit
Dim oFSO, oConnection, oCatalog, oTable, oTables, s
Const FILE = “D:\1\1.mdb” ‘数据库文件,要求目标文件夹已存在
Call RunAs32() ‘使vbs运行在32位应用程序模式
s = “20240616” ‘数据库密码
‘连接字符串
s = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” & FILE & “;Jet OLEDB:Database Password=” & s
‘删除数据库文件并新建,防止已有数据库文件导致示例出错
Set oFSO = CreateObject(“Scripting.FileSystemObject”)
If oFSO.FileExists(FILE) Then oFSO.DeleteFile FILE, True
CreateObject(“ADOX.Catalog”).Create s
Set oConnection = CreateObject(“ADODB.Connection”)
oConnection.Open s
oConnection.Execute “CREATE TABLE 表1(字段1 INT PRIMARY KEY, 字段2 INT UNIQUE, 字段3 INT)”
Set oCatalog = CreateObject(“ADOX.Catalog”)
Set oCatalog.ActiveConnection = oConnection
Set oTables = oCatalog.Tables
Set oTable = CreateObject(“ADOX.Table”)
oTable.Name = “表2”
oTable.Columns.Append “字段4”, 2 ‘adSmallInt = 2
oTable.Columns.Append “字段5”, 202, 20 ‘adVarWChar = 202
oTable.Indexes.Append “Index01”, “字段5”
oTable.Keys.Append “Unique01”, 3, “字段4” ‘adKeyUnique = 3
oTables.Append oTable
oTables.Refresh() ‘Tables.Append方法添加的表,刷新后才会显示时间
oCatalog.Tables.Item(“表1”).Name = “表3” ‘修改表名
Set oTable = oCatalog.Tables.Item(“表2”)
s = “表名 ” & vbTab & oTable.Name & vbLf & _
“字段数 ” & vbTab & oTable.Columns.Count & vbLf & _
“创建时间” & vbTab & oTable.DateCreated & vbLf & _
“最后修改” & vbTab & oTable.DateModified & vbLf & _
“索引数 ” & vbTab & oTable.Indexes.Count & vbLf & _
“键列数 ” & vbTab & oTable.Keys.Count & vbLf & _
“类型 ” & vbTab & oTable.Type
MsgBox s
oConnection.Close()
MsgBox “ok”, vbSystemModal
Sub RunAs32()
Dim oWshShell, oFSO, s, i
Set oWshShell = CreateObject(“WScript.Shell”)
Set oFSO = CreateObject(“Scripting.FileSystemObject”)
s = oWshShell.ExpandEnvironmentStrings(“%windir%\SysWOW64\WScript.exe”)
If oFSO.FileExists(s) And LCase(WScript.FullName) <> LCase(s) Then
s = s & ” “”” & WScript.ScriptFullName & “”” “
For Each i In WScript.Arguments
If InStr(i, ” “) > 0 Then i = “””” & i & “”””
s = s & i & ” “
Next
oWshShell.Run Left(s, Len(s) – 1)
WScript.Quit()
End If
End Sub
Views: 45