Basic家族vb6miniVBSwpsHome.cn作者成长之路轻.增值

(VBS日记.A021)~VBS对象之ADOX-Procedure对象

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-Procedure对象】

Procedure对象用于访问数据库的存储过程

可以从Procedures对象集合中提取或枚举Procedure对象
Procedure对象有4个属性0个方法0个事件

(一)属性:
Command 存储过程的构造和运行。类型:Command对象
DateCreated 存储过程的创建时间(只读)。类型:Date
DateModified 存储过程的最后一次修改时间(只读)。类型:Date
Name 存储过程名。类型:String

(二)示例:
‘示例:Procedure对象,Access数据库
Option Explicit
Dim oFSO, oConnection, oCatalog, oProcedures, oProcedure, oCommand, oRecordset, s, i

Const FILE = “D:\1\1.mdb” ‘数据库文件,要求目标文件夹已存在

‘CommandTypeEnum
Const adCmdText = 1 ‘文本定义语句

Call RunAs32() ‘使vbs运行在32位应用程序模式
s = “20240619” ‘数据库密码

‘连接字符串
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 PROCEDURE 指定姓名 ([@姓名] TEXT) AS ” & _
“SELECT * FROM 成绩表 WHERE 姓名 = [@姓名]”

oConnection.Execute “CREATE PROCEDURE [1 2] ([@姓名] TEXT) AS ” & _
“SELECT * FROM 成绩表 WHERE 姓名 = [@姓名]”

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 oProcedures = oCatalog.Procedures

Set oCommand = CreateObject(“ADODB.Command”)
oCommand.CommandType = adCmdText
oCommand.CommandText = “PARAMETERS [@语文] TEXT, 数学成绩 REAL;” & _
“SELECT * FROM 成绩表 WHERE 语文 > [@语文] AND 数学 > 数学成绩”
oProcedures.Append “学霸”, oCommand

oProcedures.Refresh() ‘Procedures.Append方法添加的存储过程,刷新后才会显示时间

For Each oProcedure In oProcedures
s = “存储过程名称” & vbTab & oProcedure.Name & vbLf & _
“创建时间 ” & vbTab & oProcedure.DateCreated & vbLf & _
“最后修改时间” & vbTab & oProcedure.DateModified & vbLf & _
“存储过程构造” & vbLf & oProcedure.Command.CommandText
MsgBox s
Next

Set oProcedure = oProcedures.Item(“学霸”)
Set oRecordset = oProcedure.Command.Execute(, Array(89, 89), 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: 54

Hi, I’m vbsgirl

办公职员