致力于测试团队建设和自动化测试开发,欢迎有兴趣者一起研究讨论

VBS写的常用数据库公用函数

上一篇 / 下一篇  2008-06-21 01:25:26 / 个人分类:Automation

以下是我写的常用的数据库公用函数,希望大家能一起探讨和总结,把一些常用的数据库公用函数分享出来。这个是初稿,以后使用中我会继续完善
5j#W}~$gl U&p"c-A0特别是在做报表自动化测试时,数据库的公用函数使用尤其频繁,包括对存储过程的操作
!L5g5A_(_ i.d}Q0
3z#l,`Re$r051Testing软件测试网dT[9z3d[I
' DATABASE公用函数
7_"e1mUP7S-T*[N0'51Testing软件测试网P \1Z G wUWus
'###########################################################################################################
Q3v`2lF i1`0'###########################################################################################################51Testing软件测试网Lw `.I'u u pV,J

9^1P*ie;gi0Dim objConnection                          'CONNECTION对象实例
!O ]"T&PWNh0Dim objRecordSet                                   'RECORDSET对象实例       
7s-I-\0_O;Zz qZ(]0Dim objCommand                                '命令对象实例51Testing软件测试网 Q-D Nxc`v d
Dim strConnectionString                        '连接字符串
s&u'I5@^s051Testing软件测试网 \.\d P$P3E
' ********************************************************************51Testing软件测试网.@3uM$`%m0`Am|N
' 函数说明:连接数据库;
w7n x#dN1BEs3dl0' 参数说明:(1)strDBType(数据库类型:如ORACEL;DB2;SQL;ACCESS)
/y8tE C RpL0y(C0'           (2)strDBAlias(数据库别名)51Testing软件测试网J$Q xv^p9y;bJ/k
'           (3)strUID(用户名)
a.I*BGI[/U0'           (4)strPWD(密码)51Testing软件测试网bj"I_jdH
'           (5)strIP(数据库IP地址:仅SQL SERVER 使用)51Testing软件测试网E*HDiG,lA(RXl
'           (6)strLocalHostName(本地主机名:仅SQL SERVER 使用)51Testing软件测试网QW4^m`x"x)C
'           (7)strDataSource(数据源:仅ACCESS使用;如d:\yysc.mdb)
xm{;b(fs4N m2y0' 返回结果:无
l D$H7|9~V:t%M3L'K0' 调用方法: ConnectDatabase(strDBType, strDBAlias, strUID, strPWD, strIP, strLocalHostName, strDataSource)51Testing软件测试网K&b"`{0E7H
' ********************************************************************
Z+wN,FqkhL0Sub ConnectDatabase(strDBType, strDBAlias, strUID, strPWD, strIP, strLocalHostName, strDataSource)51Testing软件测试网w'X1u{)rOn!W
    Set ōbjConnection = CreateObject("ADODB.CONNECTION")                '1 - 建立CONNECTION对象的实例
h4a9l3w:tA0   
W)O2]L8O(QW0    Select Case UCase(Trim(strDBType))51Testing软件测试网Q/j1B!f yvie
        Case "ORACLE"
i.e!]i,p~,?$hR+R/`0            strConnectionString = "Driver={Microsoft ODBC for Oracle};Server=" & strDBAlias & ";Uid="_51Testing软件测试网pf0b_I0b7X:PY)M9v
                & strUID & ";Pwd=" & strPWD & ";"                                '2 - 建立连接字符串
q+rp*y"g H3h$`O0            objConnection.Open strConnectionString                                '3 - 用Open 方法建立与数据库连接51Testing软件测试网@ui,at[@(U
        Case "DB2"
(x5LU7H\]0            strConnectionString = "Driver={IBM DB2 ODBC DRIVER};DBALIAS=" & strDBAlias & ";Uid="_
2y;xL#r!mn^!h9qV0                & strUID & ";Pwd=" & strPWD & ";"                               51Testing软件测试网2s]*@+E oO9~ sp,s
            objConnection.Open strConnectionString                               
s}!|`y8Q0        Case "SQL"51Testing软件测试网'r9uK4Stm/C
             strConnectionString = "DRIVER=SQL Server; SERVER=" & strIP & "; UID=" & strUID & "; PWD="_51Testing软件测试网;W/b [*q&?
                 & strPWD & "; APP=Microsoft Office 2003;WSID=" & strLocalHostName & "; DATABASE=" & strDBAlias & ";"51Testing软件测试网/p6EZc.b
            objConnection.Open strConnectionString                                           51Testing软件测试网\)Tv{ DS(eM
        Case "ACCESS"51Testing软件测试网:Av S:rC
            strConnectionString = "provider=microsoft.jet.oledb.4.0;data source=" & strDataSource &_
"q$L w'c,QZq\0                ";Jet OLEDB:Database Password=" & strPWD & ";"
]x%^U \2g0            objConnection.Open strConnectionString                                                 51Testing软件测试网)a'C*g f|^
        Case Else51Testing软件测试网|'H9iW`h2A
            MsgBox "输入的数据库类型格式有误" & vbCrLf & "支持的数据库类型格式:ORACLE;DB2;SQL;ACCESS;EXCEL"
e&w{cuS:G0    End Select51Testing软件测试网'P E n p A3P
   
%b.gW1A5gQ l1O`c0    If (objConnection.State = 0) Then
u }9^P C0        MsgBox "连接数据库失败!"
$rL]1H].f2Y0    End If
-`'P H#n0m/~N8k0   51Testing软件测试网.cD$lxPiJ h
End Sub
svn)ZC2J#Q\7t0
Y(S+Ic`E[0
%vPIKPSA0' ********************************************************************
;x cW$tV%|#J0' 函数说明:查询数据库(查询单列);
2Q@r,e\JPb J+P"oJ0' 参数说明:  (1)strSql:SQL语句51Testing软件测试网4E\c4y K
'           (2)strFieldName:字段名
`+Y.Ks~&L$s1e _&G&O0'           (3)str_Array_QueryResult:数组名(用来返回单列查询结果)
o [;y(m Y ^~^0' 返回结果:  intArrayLength:查询数据库返回的记录行数
y8hnv9Z b9Ox0'           str_Array_QueryResult:数组名(用来返回单列查询结果)
Q`yqn9Y1K0' 调用方法: intArrayLength = QueryDatabase(strSql, strFieldName, str_Array_QueryResult)
{4X'hB:Jr9` J)X0' ********************************************************************
He7]s*z?IH0Function QueryDatabase(strSql, strFieldName, str_Array_QueryResult)
;gtG eXC S0    Dim intArrayLength                                                                                     '数组长度
j l)K&T&^0     Dim i
&q~/S2{%V0   51Testing软件测试网m wT l/j3S-u
    i = 0   
t\2qud T0    str_Array_QueryResult = Array()                                '重新初始化数组为一个空数组
;aMwpF%z i+k9\F b0   
9Srnq'y&O}V0    Set ōbjRecordSet = CreateObject("ADODB.RECORDSET")                '4 - 建立RECORDSET对象实例51Testing软件测试网 COdUxnkE r
    Set ōbjCommand = CreateObject("ADODB.COMMAND")              '5 - 建立COMMAND对象实例
S3Bo k}0    objCommand.ActiveConnection = objConnection
e+p` H(CA)s}[B3l0    objCommand.CommandText = strSql51Testing软件测试网n)cgv;sC)d
        objRecordSet.CursorLocation = 351Testing软件测试网:hpB5I&Z*Z+W
        objRecordSet.Open objCommand                            '6 - 执行SQL语句,将结果保存在RECORDSET对象实例中
a*@MM @0   51Testing软件测试网e%W8~)V/X|4kQU'u
    intArrayLength = objRecordSet.RecordCount                  '将查询结果的行数作为数组的长度
p \,zf]!ly0   51Testing软件测试网hX \R/i CFs!R
    If intArrayLength > 0 Then51Testing软件测试网v2sz5HHwq
                ReDim str_Array_QueryResult(intArrayLength-1)
~^zf gh*Y,k3O8V0               
1|-h%fh mz"\po0                Do While NOT objRecordSet.EOF                                                '将数据库查询的列值赋值给数组            
4fA{:g3x XQK*S0                    str_Array_QueryResult(i) = objRecordSet(strFieldName)
v Xa#A'A&hy8MW0                        'Debug.WriteLine str_Array_QueryResult(i)51Testing软件测试网l(H9O*bs}lM `
                        objRecordSet.MoveNext51Testing软件测试网 Dw,hn*F0_H8L A{:U
                        i = i + 1
0t!X _9E&|f#M0                Loop
L6X'S\7m/u,p/bS0'        Else
sTNQLU]0                'ReDim str_Array_QueryResult(0)      
-{M/kB`k5d0                'str_Array_QueryResult(0) = ""     51Testing软件测试网'Q gv]R
    End If51Testing软件测试网}%u#Bv8T)R8kh m
   
{x;Aa8d;X3t&g4N9b0    QueryDatabase = intArrayLength51Testing软件测试网 {'}H!H]'i
End Function51Testing软件测试网$qpk0SsG%EYZ

f+LT,bLG*D-C[0
(BU#f"f5Q!j0' ********************************************************************
6B4[~ C"H/G `0' 函数说明:更新数据库;包括INSERT、DELETE 和 UPDATE操作51Testing软件测试网G n| A$zR4X9n@c
' 参数说明:(1)strSql:SQL语句51Testing软件测试网8V"`8E'HDC1N
' 返回结果:无51Testing软件测试网k#T;de:uqLC
' 调用方法: UpdateDatabase(strSql)51Testing软件测试网/ChA%YY;~8he
' ********************************************************************
[ F\ }#^Q mq ^1ey0Sub UpdateDatabase(strSql)51Testing软件测试网/?#v&\#u;Ap6Vf.}q#O
        Dim objCommand51Testing软件测试网 U d ^%g(r2d!Su
        Dim objField       
b] Z6qbz0       
!E1hF N9?5d m6\0        Set ōbjCommand = CreateObject("ADODB.COMMAND")51Testing软件测试网m1em:Xkf
        Set ōbjRecordSet = CreateObject("ADODB.RECORDSET")
1DD0KU#r'K$`0        objCommand.CommandText = strSql
rK)ul%i g7?0        objCommand.ActiveConnection = objConnection51Testing软件测试网;D9WNFZ3YX
        Set ōbjRecordSet = objCommand.Execute
:pobru#C|$|0       51Testing软件测试网t:I!E},z `-K
'        Do Until objRecordSet.EOF
`C8w Di(m?cK0       51Testing软件测试网Q:f6o&W.uk6S
'                For Each objField In objRecordSet.Fields
yH0p A?4x5Y&E0'                        Debug.Write objField.Name & ": " & objField.Value & "   "51Testing软件测试网efWG5k+o
'                Next
)N0Ib+PP'wepT0               51Testing软件测试网7g7S s#h"^d;B
'                objRecordSet.MoveNext
b&Q3p/hc&W0'                Debug.WriteLine
'vG G@i!|0'        Loop       
@hB\x!P,X0       51Testing软件测试网_5Afr-^%W2f1b-x
        Set ōbjCommand = Nothing51Testing软件测试网9W;u&fKM2E+|#f1b![g
        Set ōbjRecordSet = Nothing
[*YF O ^0               
hh h Rbi _3c [a0End Sub51Testing软件测试网P?^&Q#@K_2`
51Testing软件测试网~9W.y}H5z

q;rT/{v-N$k051Testing软件测试网ZF-xA+hyQ M~#H

w,s;D F gQ/c051Testing软件测试网$ZC6\&b7rIP f&Y/f6`e
' ********************************************************************
.a/[$waBn@0' 函数说明:返回符合查询结果的列的长度51Testing软件测试网:{(e$E2N z2],u
' 参数说明:(1)strSql:SQL语句
-Hm\m$HE0' 返回结果:返回符合查询结果的列的长度51Testing软件测试网@yt'O%j
' 调用方法: MaxLength = GetLenOfField(strSql)51Testing软件测试网$T|xf$dl
' ********************************************************************51Testing软件测试网(F1ofcRii*P+Q
Function GetLenOfField(strSql)
6gq!tmb,p} ?h7N Z0    '如果SQL语句为空,则默认返回的列长度为0,结束函数;否则返回列的实际长度51Testing软件测试网!|UO-K9~
    If strSql = "" Then
-o!U.fpu9P9a"` Q!x.Y0        GetLenOfField  = 0
jd%eN c0j0                Exit Function51Testing软件测试网 `%L0X+Ug^ }
    Else
X!GVhXk9}D@0            Set ōbjRecordSet = CreateObject("ADODB.RECORDSET")                        '4 - 建立RECORDSET对象实例
Rm)J `axy0            Set ōbjCommand = CreateObject("ADODB.COMMAND")              '5 - 建立COMMAND对象实例
\nCDV0            objCommand.ActiveConnection = objConnection51Testing软件测试网 @+xck"Qf:\
            objCommand.CommandText = strSql51Testing软件测试网9M'UNG]cy%N
                objRecordSet.CursorLocation = 3
4Y)`9PJB0                objRecordSet.Open objCommand                                '6 - 执行SQL语句,将结果保存在RECORDSET对象实例中
7n Ky-p M:O P0            
X @ l-h-|:Q cy0            GetLenOfField = objRecordSet.RecordCount                              '返回符合查询结果的列的长度51Testing软件测试网 n6s"L*{nv {]
       51Testing软件测试网xu W;tt'N
                Set ōbjCommand = Nothing       
8WD&T1]7J[0Bm%a0                Set ōbjRecordSet = Nothing51Testing软件测试网b(r-x3z-A
        End If51Testing软件测试网 f9y,k RYS R5J
End Function
m|Nf;@.qa0
O&{g;N `'_+`051Testing软件测试网 YD:R$lr'cGR
' ********************************************************************51Testing软件测试网6K9AH?QZ
' 函数说明:关闭数据库连接;
l6UDj%M%e {"M ck0' 参数说明:无
T B&Z/vt0' 返回结果:无
5DFZ5j u~h/|'t0' 调用方法: CloseDatabase()
p^Pls7nGs!i/f0' ********************************************************************
O,@1D0g#At0Sub CloseDatabase()51Testing软件测试网rPC@A!wU
    objRecordSet.Close
{G cEl`0    objConnection.Close51Testing软件测试网.zz7S%Z|:m&};]a
   51Testing软件测试网#VQ:?_ VY@
    Set ōbjCommand = Nothing51Testing软件测试网 U0`;Zl2J%u?
    Set ōbjRecordSet = Nothing51Testing软件测试网 |)~2l`M(g2c
    Set ōbjConnection = Nothing
l6Kk0zP @]0End Sub
(K)KZIhU8C*~N0

TAG: 自动化测试

 

评分:0

我来说两句

日历

« 2024-04-21  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 91044
  • 日志数: 79
  • 图片数: 1
  • 建立时间: 2008-05-18
  • 更新时间: 2009-06-04

RSS订阅

Open Toolbar