QTP的那些事--vbs通用操作数据库函数整理
原文地址:
http://bbs.51testing.com/viewthread.php?tid=118028&highlight=
代码如下:
以下是我写的常用的数据库公用函数,希望大家能一起探讨和总结,把一些常用的数据库公用函数分享出来。这个是初稿,以后使用中我会继续完善 特别是在做报表自动化测试时,数据库的公用函数使用尤其频繁,包括对存储过程的操作 ' DATABASE公用函数 ' '########################################################################################################### '################################################################################’#'#'######################### Dim objConnection 'CONNECTION对象实例 Dim objRecordSet 'RECORDSET对象实例 Dim objCommand '命令对象实例 Dim strConnectionString '连接字符串 ' ******************************************************************** ' 函数说明:连接数据库; ' 参数说明:(1)strDBType(数据库类型:如ORACEL;DB2;SQL;ACCESS) ' (2)strDBAlias(数据库别名) ' (3)strUID(用户名) ' (4)strPWD(密码) ' (5)strIP(数据库IP地址:仅SQL SERVER 使用) ' (6)strLocalHostName(本地主机名:仅SQL SERVER 使用) ' (7)strDataSource(数据源:仅ACCESS使用;如d:\yysc.mdb) ' 返回结果:无 ' 调用方法: ConnectDatabase(strDBType, strDBAlias, strUID, strPWD, strIP, strLocalHostName, strDataSource) ' ******************************************************************** Sub ConnectDatabase(strDBType, strDBAlias, strUID, strPWD, strIP, strLocalHostName, strDataSource) Set objConnection = CreateObject("ADODB.CONNECTION") '1 - 建立CONNECTION对象的实例 Select Case UCase(Trim(strDBType)) Case "ORACLE" strConnectionString = "Driver={Microsoft ODBC for Oracle};Server=" & strDBAlias & ";Uid="_ & strUID & ";Pwd=" & strPWD & ";" '2 - 建立连接字符串 objConnection.Open strConnectionString '3 - 用Open 方法建立与数据库连接 Case "DB2" strConnectionString = "Driver={IBM DB2 ODBC DRIVER};DBALIAS=" & strDBAlias & ";Uid="_ & strUID & ";Pwd=" & strPWD & ";" objConnection.Open strConnectionString Case "SQL" strConnectionString = "DRIVER=SQL Server; SERVER=" & strIP & "; UID=" & strUID & "; PWD="_ & strPWD & "; APP=Microsoft Office 2003;WSID=" & strLocalHostName & "; DATABASE=" & strDBAlias & ";" objConnection.Open strConnectionString Case "ACCESS" strConnectionString = "provider=microsoft.jet.oledb.4.0;data source=" & strDataSource &_ ";Jet OLEDB:Database Password=" & strPWD & ";" objConnection.Open strConnectionString Case Else MsgBox "输入的数据库类型格式有误" & vbCrLf & "支持的数据库类型格式:ORACLE;DB2;SQL;ACCESS;EXCEL" End Select If (objConnection.State = 0) Then MsgBox "连接数据库失败!" End If End Sub ' ******************************************************************** ' 函数说明:查询数据库(查询单列); ' 参数说明: (1)strSql:SQL语句 ' (2)strFieldName:字段名 ' (3)str_Array_QueryResult:数组名(用来返回单列查询结果) ' 返回结果: intArrayLength:查询数据库返回的记录行数 ' str_Array_QueryResult:数组名(用来返回单列查询结果) ' 调用方法: intArrayLength = QueryDatabase(strSql, strFieldName, str_Array_QueryResult) ' ******************************************************************** Function QueryDatabase(strSql, strFieldName, str_Array_QueryResult) Dim intArrayLength '数组长度 Dim i i = 0 str_Array_QueryResult = Array() '重新初始化数组为一个空数组 Set objRecordSet = CreateObject("ADODB.RECORDSET") '4 - 建立RECORDSET对象实例 Set objCommand = CreateObject("ADODB.COMMAND") '5 - 建立COMMAND对象实例 objCommand.ActiveConnection = objConnection objCommand.CommandText = strSql objRecordSet.CursorLocation = 3 objRecordSet.Open objCommand '6 - 执行SQL语句,将结果保存在RECORDSET对象实例中 intArrayLength = objRecordSet.RecordCount '将查询结果的行数作为数组的长度 If intArrayLength > 0 Then ReDim str_Array_QueryResult(intArrayLength-1) Do While NOT objRecordSet.EOF '将数据库查询的列值赋值给数组 str_Array_QueryResult(i) = objRecordSet(strFieldName) 'Debug.WriteLine str_Array_QueryResult(i) objRecordSet.MoveNext i = i + 1 Loop ' Else 'ReDim str_Array_QueryResult(0) 'str_Array_QueryResult(0) = "" End If QueryDatabase = intArrayLength End Function ' ******************************************************************** ' 函数说明:更新数据库;包括INSERT、DELETE 和 UPDATE操作 ' 参数说明:(1)strSql:SQL语句 ' 返回结果:无 ' 调用方法: UpdateDatabase(strSql) ' ******************************************************************** Sub UpdateDatabase(strSql) Dim objCommand Dim objField Set objCommand = CreateObject("ADODB.COMMAND") Set objRecordSet = CreateObject("ADODB.RECORDSET") objCommand.CommandText = strSql objCommand.ActiveConnection = objConnection Set objRecordSet = objCommand.Execute ' Do Until objRecordSet.EOF ' For Each objField In objRecordSet.Fields ' Debug.Write objField.Name & ": " & objField.Value & " " ' Next ' objRecordSet.MoveNext ' Debug.WriteLine ' Loop Set objCommand = Nothing Set objRecordSet = Nothing End Sub ' ******************************************************************** ' 函数说明:返回符合查询结果的列的长度 ' 参数说明:(1)strSql:SQL语句 ' 返回结果:返回符合查询结果的列的长度 ' 调用方法: MaxLength = GetLenOfField(strSql) ' ******************************************************************** Function GetLenOfField(strSql) '如果SQL语句为空,则默认返回的列长度为0,结束函数;否则返回列的实际长度 If strSql = "" Then GetLenOfField = 0 Exit Function Else Set objRecordSet = CreateObject("ADODB.RECORDSET") '4 - 建立RECORDSET对象实例 Set objCommand = CreateObject("ADODB.COMMAND") '5 - 建立COMMAND对象实例 objCommand.ActiveConnection = objConnection objCommand.CommandText = strSql objRecordSet.CursorLocation = 3 objRecordSet.Open objCommand '6 - 执行SQL语句,将结果保存在RECORDSET对象实例中 GetLenOfField = objRecordSet.RecordCount '返回符合查询结果的列的长度 Set objCommand = Nothing Set objRecordSet = Nothing End If End Function ' ******************************************************************** ' 函数说明:关闭数据库连接; ' 参数说明:无 ' 返回结果:无 ' 调用方法: CloseDatabase() ' ******************************************************************** Sub CloseDatabase() objRecordSet.Close objConnection.Close Set objCommand = Nothing Set objRecordSet = Nothing Set objConnection = Nothing End Sub
作者:高级测试开发网
博客地址:https://seniortesting.club
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想
· Ai满嘴顺口溜,想考研?浪费我几个小时
· Browser-use 详细介绍&使用文档
· 软件产品开发中常见的10个问题及处理方法