51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 18306|回复: 42
打印 上一主题 下一主题

[原创] VBS写的常用数据库公用函数

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-6-20 10:32:33 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
以下是我写的常用的数据库公用函数,希望大家能一起探讨和总结,把一些常用的数据库公用函数分享出来。这个是初稿,以后使用中我会继续完善
特别是在做报表自动化测试时,数据库的公用函数使用尤其频繁,包括对存储过程的操作


' 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

[ 本帖最后由 milo.jiang 于 2008-6-20 11:54 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

42#
发表于 2012-8-11 22:26:45 | 只看该作者
正在学习中,感谢楼主!
回复 支持 反对

使用道具 举报

  • TA的每日心情

    2017-4-28 14:26
  • 签到天数: 5 天

    连续签到: 1 天

    [LV.2]测试排长

    41#
    发表于 2012-5-7 16:24:10 | 只看该作者
    顶下,慢慢学
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    40#
    发表于 2012-5-7 11:43:00 | 只看该作者
    先下载了,回去慢慢研究
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-1-7 16:35
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    39#
    发表于 2012-3-21 16:30:34 | 只看该作者
    谢谢楼主分享!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    38#
    发表于 2012-3-20 20:01:51 | 只看该作者
    非常非常感谢!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    37#
    发表于 2011-12-19 17:23:55 | 只看该作者
    谢谢楼主分亨!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    36#
    发表于 2011-4-10 16:22:11 | 只看该作者
    回复 1# milo.jiang


        十分感谢
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    35#
    发表于 2010-12-9 11:19:32 | 只看该作者
    不顶不行啊
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    34#
    发表于 2010-12-7 16:05:46 | 只看该作者
    好东西,谢谢分享。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-13 14:04
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]测试排长

    33#
    发表于 2010-12-7 15:17:29 | 只看该作者
    不错的资料。参考了。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    32#
    发表于 2010-12-6 16:58:36 | 只看该作者
    谢谢分享
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    31#
    发表于 2010-11-30 17:31:42 | 只看该作者
    强烈支持,很全,谢谢!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    30#
    发表于 2010-11-30 15:48:35 | 只看该作者
    学习了!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    29#
    发表于 2010-7-2 13:47:11 | 只看该作者
    谢啦
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    28#
    发表于 2010-4-24 01:19:33 | 只看该作者
    好东西,谢谢楼主的分享
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2016-3-18 13:58
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    27#
    发表于 2009-10-9 18:19:50 | 只看该作者
    谢谢楼主的分享!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    26#
    发表于 2009-8-25 00:32:06 | 只看该作者
    thanks a lot!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    25#
    发表于 2009-8-18 21:34:54 | 只看该作者
    很好,太感谢了,支持一下!
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-17 04:57 , Processed in 0.088631 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表