ADO——ActiveX Data Objects
使用VBScript脚本语言调用ADO组件来进行数据操作。优势:脚本灵活性高,可实现的功能也较多,可以随意地把要实现的数据操作封装成函数。
前置:UFT连接MySQL ODBC_nee~的博客-CSDN博客
Connection对象
掌管数据库的连接和关闭功能。
Dim adoConn '定义ADO连接对象
Dim ConnectionStr '定义数据库连接字符串
'获取数据库连接字符串
ConnectionStr = "DSN=MySQL ODBC sys;SERVER=127.0.0.1;UID=root;PWD=root;DATABASE=sakila;PORT=3306"
'创建数据库连接对象
Set adoConn = CreateObject("adodb.Connection")
'利用数据库连接字符串打开数据库
adoConn.Open ConnectionStr
'此处进行数据库操作
'关闭数据库
adoConn.Close
'释放数据库对象
Set adoConn = Nothing
Command对象
完成SQL语句的执行。
RecordSet对象
存放执行后的数据结果集。
查询数据库
Execute方法:此方法可以对数据库直接进行SQL语句执行操作,并且能够对其执行结果进行返回,返回结果为RecordSet。最后通过RecordSet对象的Field属性获取到字段值。
Dim adoConn '定义ADO连接对象
Dim ConnectionStr '定义数据库连接字符串
'获取数据库连接字符串
ConnectionStr = "DSN=MySQL ODBC;SERVER=127.0.0.1;UID=root;PWD=root;DATABASE=gloria;PORT=3306"
'获取数据库查询语句
sqlStr = "Select * from user where LastName = 'Wang'"
'创建数据库连接对象
Set adoConn = CreateObject("adodb.Connection")
'利用数据库连接字符串打开数据库
adoConn.Open ConnectionStr
'执行sql语句并返回对应的结果集
Set adoRst = adoConn.Execute(sqlStr)
'获取结果集中年龄字段的值
Msgbox adoRst.Fields.Item("age").Value
'关闭数据库
adoConn.Close
'释放数据库对象
Set adoConn = Nothing
如果结果有多行记录,可以使用游标
For?i?=?1?To?adoRst.Fields.Count ????Msgbox?adoRst.Fields.Item("age").Value ????adoRst.MoveNext Next
'EOF: End of Line While?Not?adoRst.EOF ????Msgbox?adoRst.Fields.Item("age").Value ????adoRst.MoveNext Wend
数据库修改
F:\study\UFT\sql.txt文件
循环执行,把所有的SQL语句分割成数组,并把数组全部取出来循环执行SQL?
Dim adoConn '定义ADO连接对象
Dim ConnectionStr '定义数据库连接字符串
'获取数据库连接字符串
ConnectionStr = "DSN=MySQL ODBC;SERVER=127.0.0.1;UID=root;PWD=root;DATABASE=gloria;PORT=3306"
'获取数据库查询语句集合
SQLCommands = GetSQLCommands("F:\study\UFT\sql.txt")
'创建数据库连接对象
Set adoConn = CreateObject("adodb.Connection")
'利用数据库连接字符串打开数据库
adoConn.Open ConnectionStr
'循环执行sql语句
For i = 0 To UBound(SQLCommands)
adoConn.Execute SQLCommands(i)
Next
'关闭数据库
adoConn.Close
'释放数据库对象
Set adoConn = Nothing
Function GetSQLCommands(sqlPath)
'创建fso模型对象
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(sqlPath)
'获取txt中的所有文本
allSQLCommand = f.ReadAll
'对所有文本通过回车进行分割,把sql语句分割成数组
'Chr()从 0 到 31 之间的数字表示不可打印的 ASCII 代码,例如 Chr(10) 将返回一个换行符。
sqlcommands = Split(allSQLCommand,Chr(10))
'返回所有sql语句数组
GetSQLCommands = sqlcommands
'释放txt
Set f = Nothing
'释放fso
Set fso = Nothing
End Function
结果
参数化使其更通用?
'********************************************************************************************************************
'Description:数据库验证函数
'Argument:
'ConnectionStr 数据库连接字符串
'sqlStr sql语句
'verifyProperty 需要验证的字段名
'expectValue 验证期待值
'********************************************************************************************************************
Function VerifySQLData(ConnectionStr,sqlStr,verifyProperty,expectValue)
'创建数据库连接对象
Set adoConn = CreateObject("adodb.Connection")
'利用数据库连接字符串打开数据库
adoConn.Open ConnectionStr
'执行sql语句并返回对应的结果集
Set adoRst = adoConn.Execute(sqlStr)
'获取实际值
actualValue = adoRst.Fields.Item(verifyProperty).Value
'对比预期值和实际值
If cstr(expectValue) = cstr(actualValue) Then
Reporter.ReportEvent micPass,"SQL_DATA_CHECK","[actualValue = expectValue =" + cstr(actualValue) +"]"
Else
Reporter.ReportEvent micFail,"SQL_DATA_CHECK","[expectValue = " + cstr(expectValue) + " actualValue = " + cstr(actualValue) + "]"
End If
'关闭数据库
adoConn.Close
'释放数据库对象
Set adoConn = Nothing
End Function
VerifySQLData "DSN=MySQL ODBC;SERVER=127.0.0.1;UID=root;PWD=root;DATABASE=gloria;PORT=3306","Select * from user where LastName = 'Wang'","age","22"
结果:
关键参数进行环境变量的配置
把一些关键参数进行环境变量的配置,以便以后有任何变更可直接在配置文件里修改,而不是去更改脚本中的数值。
新建DB Configuration.xml文件
?在 UFT-File-Settings-Environment-用户定义 导入
只需更改调用函数的那行代码就行
'获取数据库连接字符串
'ConnectionStr = "DSN=MySQL ODBC;SERVER=127.0.0.1;UID=root;PWD=root;DATABASE=gloria;PORT=3306"
'********************************************************************************************************************
'Description:数据库验证函数
'Argument:
'ConnectionStr 数据库连接字符串
'sqlStr sql语句
'verifyProperty 需要验证的字段名
'expectValue 验证期待值
'********************************************************************************************************************
Function VerifySQLData(ConnectionStr,sqlStr,verifyProperty,expectValue)
'创建数据库连接对象
Set adoConn = CreateObject("adodb.Connection")
'利用数据库连接字符串打开数据库
adoConn.Open ConnectionStr
'执行sql语句并返回对应的结果集
Set adoRst = adoConn.Execute(sqlStr)
'获取实际值
actualValue = adoRst.Fields.Item(verifyProperty).Value
'对比预期值和实际值
If cstr(expectValue) = cstr(actualValue) Then
Reporter.ReportEvent micPass,"SQL_DATA_CHECK","[actualValue = expectValue =" + cstr(actualValue) +"]"
Else
Reporter.ReportEvent micFail,"SQL_DATA_CHECK","[expectValue = " + cstr(expectValue) + " actualValue = " + cstr(actualValue) + "]"
End If
'关闭数据库
adoConn.Close
'释放数据库对象
Set adoConn = Nothing
End Function
VerifySQLData Environment.Value("ConnectionStr"),"Select * from user where LastName = 'Wang'","age","22"
?结果:
?
|