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库,并且配置了正确的注册表项。
【VBS对象之ADOX-View对象】
View对象用于访问数据库的视图
可以从Views对象集合中提取或枚举View对象
View对象有4个属性0个方法0个事件
(一)属性:
Command 视图的构造和运行。类型:Command对象
DateCreated 视图的创建时间(只读)。类型:Date
DateModified 视图的最后一次修改时间(只读)。类型:Date
Name 视图名。类型:String
(二)示例:
‘示例:View对象,Access数据库
Option Explicit
Dim oFSO, oConnection, oCatalog, oViews, oView, oCommand, oRecordset, s, i
Const FILE = “D:\1\1.mdb” ‘数据库文件,要求目标文件夹已存在
‘CommandTypeEnum
Const adCmdText = 1 ‘文本定义语句
Call RunAs32() ‘使vbs运行在32位应用程序模式
s = “20240621” ‘数据库密码
‘连接字符串
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 成绩表(姓名 TEXT, 语文 REAL, 数学 REAL)”
oConnection.Execute “CREATE VIEW 语文及格 AS SELECT * FROM 成绩表 WHERE 语文 >= 60”
oConnection.Execute “CREATE VIEW 数学优秀 (学霸) AS SELECT 姓名 FROM 成绩表 WHERE 数学 >= 90”
oConnection.Execute “INSERT INTO 成绩表 VALUES(‘张三’, 50, 50)”
oConnection.Execute “INSERT INTO 成绩表 VALUES(‘李四’, 60, 60)”
oConnection.Execute “INSERT INTO 成绩表 VALUES(‘王二’, 95, 99)”
oConnection.Execute “INSERT INTO 成绩表 VALUES(‘赵九’, 90, 90)”
Set oCatalog = CreateObject(“ADOX.Catalog”)
Set oCatalog.ActiveConnection = oConnection
Set oViews = oCatalog.Views
Set oCommand = CreateObject(“ADODB.Command”)
oCommand.CommandType = adCmdText
oCommand.CommandText = “SELECT 姓名, 数学 FROM 成绩表 WHERE 语文 >= 90”
oCatalog.Views.Append “语文优秀”, oCommand
oViews.Refresh() ‘Views.Append方法添加的存储过程,刷新后才会显示时间
For Each oView In oViews
s = “视图名称” & vbTab & vbTab & oView.Name & vbLf & _
“创建时间” & vbTab & vbTab & oView.DateCreated & vbLf & _
“最后修改时间” & vbTab & oView.DateModified & vbLf & _
“视图构造” & vbLf & oView.Command.CommandText
MsgBox s
Next
Set oView = oViews.Item(“数学优秀”)
Set oRecordset = oView.Command.Execute(, , adCmdText)
s = “”
For i = 0 To oRecordset.Fields.Count – 1
s = s & oRecordset(i).Name & vbTab
Next
s = Left(s, Len(s) – 1) & vbLf & vbLf
Do Until oRecordset.EOF = True
For i = 0 To oRecordset.Fields.Count – 1
s = s & oRecordset(i).Value & vbTab
Next
s = Left(s, Len(s) – 1) & vbLf
oRecordset.MoveNext()
Loop
oRecordset.Close()
MsgBox Left(s, Len(s) – 1)
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: 51