共同探讨QTP相关问题

VBS 常用数据库函数

上一篇 / 下一篇  2008-06-21 14:28:41 / 个人分类:QTP

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

摘自http://bbs.51testing.com/viewthread.php?tid=118028&pid=998989&page=1&extra=page%3D1#pid998989
9^%le$\1BJ0N0
以下是我写的常用的数据库公用函数,希望大家能一起探讨和总结,把一些常用的数据库公用函数分享出来。这个是初稿,以后使用中我会继续完善51Testing软件测试网+LXY-v-N:f @p
特别是在做报表自动化测试时,数据库的公用函数使用尤其频繁,包括对存储过程的操作
TIL-w"U+O051Testing软件测试网"Ca:|3e @c

a5Z0V/Z|3k0' DATABASE公用函数
^X i:f`YUPa,P0'51Testing软件测试网 x3Hp(S1aY `&|2Tz[
'###########################################################################################################
hr1b sg6G s h0'###########################################################################################################51Testing软件测试网l)S mQ:he5{

-d#w3H?VF0Dim objConnection                          'CONNECTION对象实例
h^9_H A,K9J0Dim objRecordSet                                   'RECORDSET对象实例       51Testing软件测试网P/nuX UR
Dim objCommand                                '命令对象实例
&C&WQf\0Dim strConnectionString                        '连接字符串51Testing软件测试网mU$?7e cW)c DZ
51Testing软件测试网(K#R X8Xv4W2Y?
' ********************************************************************51Testing软件测试网Y/wwkyg)uF
' 函数说明:连接数据库;51Testing软件测试网`s*FcO.Y9GG
' 参数说明:(1)strDBType(数据库类型:如ORACEL;DB2;SQL;ACCESS)
9B7Ugwoc-}c0'           (2)strDBAlias(数据库别名)
gm'T#lB JQsm0'           (3)strUID(用户名)
i })g{;p;F0'           (4)strPWD(密码)51Testing软件测试网W8J]TfP7O|!_
'           (5)strIP(数据库IP地址:仅SQL SERVER 使用)51Testing软件测试网KDyC t/D*v%SKX
'           (6)strLocalHostName(本地主机名:仅SQL SERVER 使用)51Testing软件测试网.l.q8tiCK^4@Jd
'           (7)strDataSource(数据源:仅ACCESS使用;如d:\yysc.mdb)
W'A$O6g\9S0' 返回结果:无51Testing软件测试网/WC%[6V&_k[R
' 调用方法: ConnectDatabase(strDBType, strDBAlias, strUID, strPWD, strIP, strLocalHostName, strDataSource)
'?4jFL*eE-i)g%K0' ********************************************************************
K jZ Kz\0Sub ConnectDatabase(strDBType, strDBAlias, strUID, strPWD, strIP, strLocalHostName, strDataSource)
qT4P4WLvc;O0    Set ōbjConnection = CreateObject("ADODB.CONNECTION")                '1 - 建立CONNECTION对象的实例51Testing软件测试网fMB#u hgy
   
,f _KjS}0    Select Case UCase(Trim(strDBType))51Testing软件测试网0\"h9}-KyyU.X.sJm
        Case "ORACLE"
R;u5^;_N0            strConnectionString = "Driver={Microsoft ODBC for Oracle};Server=" & strDBAlias & ";Uid="_51Testing软件测试网;E2|B4P{;w1O
                & strUID & ";Pwd=" & strPWD & ";"                                '2 - 建立连接字符串
F9D/Q6d?Wq;n4Y0            objConnection.Open strConnectionString                                '3 - 用Open 方法建立与数据库连接51Testing软件测试网_0P)m"m}P8[(\
        Case "DB2"
otM(|/D0            strConnectionString = "Driver={IBM DB2 ODBC DRIVER};DBALIAS=" & strDBAlias & ";Uid="_
PSFn;DP0                & strUID & ";Pwd=" & strPWD & ";"                               
I#pk"U S\wB0            objConnection.Open strConnectionString                               
^f;gR9]%t+}:x0        Case "SQL"51Testing软件测试网z@O3fW)? ]d M#O\
             strConnectionString = "DRIVER=SQL Server; SERVER=" & strIP & "; UID=" & strUID & "; PWD="_
3A(NxEMzG8DZ0                 & strPWD & "; APP=Microsoft Office 2003;WSID=" & strLocalHostName & "; DATABASE=" & strDBAlias & ";"51Testing软件测试网h sXY d
            objConnection.Open strConnectionString                                           
bo |){7nBd l[0        Case "ACCESS"
Ul'_1?*`e)\Jk!gb0            strConnectionString = "provider=microsoft.jet.oledb.4.0;data source=" & strDataSource &_
x9w eUf:G p;q{0                ";Jet OLEDB:Database Password=" & strPWD & ";"51Testing软件测试网y3xti?E$X
            objConnection.Open strConnectionString                                                 51Testing软件测试网C7I$V^9mb
        Case Else
t+NS P5lk;zN0            MsgBox "输入的数据库类型格式有误" & vbCrLf & "支持的数据库类型格式:ORACLE;DB2;SQL;ACCESS;EXCEL"51Testing软件测试网;E4e2yu0y
    End Select51Testing软件测试网;z4m,H)Z,ygt7X1}
   51Testing软件测试网6tRD-c$\:}O QK
    If (objConnection.State = 0) Then
J&YFH6ppM-N U|0        MsgBox "连接数据库失败!"
C S3J^8P0    End If51Testing软件测试网+a0a}7Im/[~s qo.HU
   51Testing软件测试网g K0T:?7|&Sd
End Sub
7?.L8C3m:E;N9_0
(eE8]7l|Oy051Testing软件测试网e0i&|fu3cAC
' ********************************************************************
Xrr(~2k.b0' 函数说明:查询数据库(查询单列);
sELLB0' 参数说明:  (1)strSql:SQL语句
V;aFdn r6? V0'           (2)strFieldName:字段名51Testing软件测试网$A5gj+J+k D0OAlj
'           (3)str_Array_QueryResult:数组名(用来返回单列查询结果)
#N6~x&@$ee1X0' 返回结果:  intArrayLength:查询数据库返回的记录行数51Testing软件测试网!]t.Vi*c^b4B
'           str_Array_QueryResult:数组名(用来返回单列查询结果)
$w _A!rN_M0' 调用方法: intArrayLength = QueryDatabase(strSql, strFieldName, str_Array_QueryResult)
U,[{h7m0' ********************************************************************
9n%V^Y:i0Function QueryDatabase(strSql, strFieldName, str_Array_QueryResult)51Testing软件测试网-A)i I+QdK?
    Dim intArrayLength                                                                                     '数组长度51Testing软件测试网.rnl)W9|
     Dim i51Testing软件测试网/U9m$[o:DjM;c
   
;ZN2Y[Z]z.c0    i = 0   
B'_MZ|%jwj0    str_Array_QueryResult = Array()                                '重新初始化数组为一个空数组
_ k!O Uq0d*ovD7K0   
OgiO&kf p;G0t(dB&W0    Set ōbjRecordSet = CreateObject("ADODB.RECORDSET")                '4 - 建立RECORDSET对象实例51Testing软件测试网 `p&_e3_.X x8]5XJJ
    Set ōbjCommand = CreateObject("ADODB.COMMAND")              '5 - 建立COMMAND对象实例51Testing软件测试网LGD~;E;Y3J x}6A
    objCommand.ActiveConnection = objConnection51Testing软件测试网(K1BL5Z0YID.R1}6`
    objCommand.CommandText = strSql51Testing软件测试网8@4cMv1^4W-^
        objRecordSet.CursorLocation = 3
Ea#d$jbMI0        objRecordSet.Open objCommand                            '6 - 执行SQL语句,将结果保存在RECORDSET对象实例中51Testing软件测试网7L5epA5Z\u"sL
   51Testing软件测试网Y$XsY1Jf+x
    intArrayLength = objRecordSet.RecordCount                  '将查询结果的行数作为数组的长度
`F%fJh4Sb)m7U0   
sZH B+m.S0    If intArrayLength > 0 Then51Testing软件测试网-C`Ce$x2o6C
                ReDim str_Array_QueryResult(intArrayLength-1)
%\VHW:V0               51Testing软件测试网*`Yip4L
                Do While NOT objRecordSet.EOF                                                '将数据库查询的列值赋值给数组            
~!@RA+wn0                    str_Array_QueryResult(i) = objRecordSet(strFieldName)51Testing软件测试网+K8vh9FXs
                        'Debug.WriteLine str_Array_QueryResult(i)51Testing软件测试网{,}1^5sl#jP`
                        objRecordSet.MoveNext51Testing软件测试网S,?1ek g%Z;j
                        i = i + 151Testing软件测试网`2^ Y)v'C1a Y
                Loop
o/x*^Hs ~ U0'        Else
[_w2|z$qNI0                'ReDim str_Array_QueryResult(0)      
%~E _-TU Bb?0                'str_Array_QueryResult(0) = ""     51Testing软件测试网1a _(xQhCD
    End If51Testing软件测试网(Qn7\s4GM$Lg0Y
   
8N?(].tgP0    QueryDatabase = intArrayLength
5j-^5K^+B0End Function
3wM n(x9S9Y)`-mU0
R U{4Qu+?m0
Iube q6u0' ********************************************************************
M:q-GqbS0' 函数说明:更新数据库;包括INSERT、DELETE 和 UPDATE操作51Testing软件测试网U-wPe.|5`#?
' 参数说明:(1)strSql:SQL语句51Testing软件测试网.^u)r-T6z-Pj _
' 返回结果:无51Testing软件测试网[2Cu2Hc ^x3{
' 调用方法: UpdateDatabase(strSql)
#]a9M l G g/Y0' ********************************************************************51Testing软件测试网I^i$AG6F?iG"jk
Sub UpdateDatabase(strSql)
uu#iRf9`6w^"s0        Dim objCommand
i#@s E4vM B-hOR![0        Dim objField       
m3OM"w%p%Z0       51Testing软件测试网t V8U q%Oz.]/}
        Set ōbjCommand = CreateObject("ADODB.COMMAND")51Testing软件测试网'L5x,lmK(i]2\
        Set ōbjRecordSet = CreateObject("ADODB.RECORDSET")
|/nx6E^ F@ k0        objCommand.CommandText = strSql
b!x7~ Ev%ah+Y3a q0        objCommand.ActiveConnection = objConnection51Testing软件测试网'[u8s%A5sf/s.k B
        Set ōbjRecordSet = objCommand.Execute51Testing软件测试网 sYg&a8},y } PXgx
       51Testing软件测试网:A;o3g TZT
'        Do Until objRecordSet.EOF
M"i7s!\.o;H)j0       51Testing软件测试网'ib!o.X2W7b/`*o
'                For Each objField In objRecordSet.Fields51Testing软件测试网|'c [Y0qB lKK0I
'                        Debug.Write objField.Name & ": " & objField.Value & "   "51Testing软件测试网K,Os`u
'                Next
q$[*h&IN5ke7|3Y0               51Testing软件测试网Z%o%tJp
'                objRecordSet.MoveNext51Testing软件测试网7V\0|^2n w6r
'                Debug.WriteLine51Testing软件测试网D%k Q#d5[2ub
'        Loop       
2J HT:F [-C O0       
*C2v?D)M!@)^-r!C)XG0        Set ōbjCommand = Nothing51Testing软件测试网+f `C3} G8Tx;fE!? s
        Set ōbjRecordSet = Nothing
djBthoO.R;R!M'?0               51Testing软件测试网L/v?Zn{9]jTa c]
End Sub51Testing软件测试网9N"[ T)rq:}(su;cP
51Testing软件测试网Zvvda0t

DJoP Z:L]-w0
v.Ar"t@*[:U0
lGU~km:U051Testing软件测试网+k&^w(vli3TL'k&aC#N
' ********************************************************************
,v"lq'xg7Mrr'Z0' 函数说明:返回符合查询结果的列的长度51Testing软件测试网aJp(S.W M.km
' 参数说明:(1)strSql:SQL语句
)e0g1zh)n8xgz0la0' 返回结果:返回符合查询结果的列的长度51Testing软件测试网4lO0BHs|(\ w
' 调用方法: MaxLength = GetLenOfField(strSql)51Testing软件测试网1Q5i$p3k'~f Rq4x
' ********************************************************************
?#e#ijG0Function GetLenOfField(strSql)51Testing软件测试网H+`9f9SY*f
    '如果SQL语句为空,则默认返回的列长度为0,结束函数;否则返回列的实际长度
Uv-d p%N"yQ0    If strSql = "" Then
?*p4^,Q/n3z0        GetLenOfField  = 051Testing软件测试网-C:p Q B4sT'A Z
                Exit Function
9J2F}9wY Yg__.g0    Else
7nL5n7[&q0            Set ōbjRecordSet = CreateObject("ADODB.RECORDSET")                        '4 - 建立RECORDSET对象实例
bR$S4VR&nE0            Set ōbjCommand = CreateObject("ADODB.COMMAND")              '5 - 建立COMMAND对象实例51Testing软件测试网w~ S4eW
            objCommand.ActiveConnection = objConnection
!Hf2w8x]mo0            objCommand.CommandText = strSql
`~9PPD G;I0                objRecordSet.CursorLocation = 351Testing软件测试网v5sh@#tkR$SGS K
                objRecordSet.Open objCommand                                '6 - 执行SQL语句,将结果保存在RECORDSET对象实例中
8p$`{&o L S0            51Testing软件测试网k7Ee.[xH9?4P
            GetLenOfField = objRecordSet.RecordCount                              '返回符合查询结果的列的长度51Testing软件测试网8c3Y@H5r ]\h
       
xV_ \.t6kP7}'k4C0                Set ōbjCommand = Nothing       51Testing软件测试网J7d[0f-f9}%FM-e
                Set ōbjRecordSet = Nothing
}xcb4{&Xn x0        End If51Testing软件测试网m*R r$x(M*B$nz
End Function51Testing软件测试网&YR6UM$iz

bK:m*~E|0
6Z&? M*s Bl0' ********************************************************************
'I9MR Y#m2^ M0' 函数说明:关闭数据库连接;51Testing软件测试网7m SCJ'n
' 参数说明:无
,eS G S"?\0' 返回结果:无
*}&zm0~\M6x0' 调用方法: CloseDatabase()51Testing软件测试网Xv0q f;j!N| ?N
' ********************************************************************51Testing软件测试网M|#ktj |4GO
Sub CloseDatabase()51Testing软件测试网{'@:z jg%Z
    objRecordSet.Close
5|g1M2J T3dl0    objConnection.Close
Q@7v%G:v#D&QC0   51Testing软件测试网^ g5S\/TsA
    Set ōbjCommand = Nothing
{Mf`g%{}!g0    Set ōbjRecordSet = Nothing51Testing软件测试网r5`%o u1BdW4UMM
    Set ōbjConnection = Nothing
U(_gQOX rPISZl0End Sub
2H*wv^$@X#X:D&H0

TAG: QTP

 

评分:0

我来说两句

Open Toolbar