IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> UFT数据库操作——ADO -> 正文阅读

[大数据]UFT数据库操作——ADO

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"

?结果:

?

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-05-05 11:25:14  更:2022-05-05 11:28:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 1:07:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码