• 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
    
  • 相关阅读:
    把git项目放到个人服务器上
    关于fcitx无法切换输入法的问题解决
    博客变迁通知
    (欧拉回路 并查集 别犯傻逼的错了) 7:欧拉回路 OpenJudge 数据结构与算法MOOC / 第七章 图 练习题(Excercise for chapter7 graphs)
    (并查集) HDU 1856 More is better
    (并查集 不太会) HDU 1272 小希的迷宫
    (并查集 注意别再犯傻逼的错了) HDU 1213 How Many Tables
    (最小生成树 Kruskal算法) 51nod 1212 无向图最小生成树
    (并查集) HDU 1232 畅通工程
    (最小生成树 Prim) HDU 1233 还是畅通工程
  • 原文地址:https://www.cnblogs.com/seniortestingdev/p/2417060.html
Copyright © 2020-2023  润新知