virgolong 发表于 2009-4-17 15:06:13

大家帮忙看看关于数据库访问的方法正确不

本人才用QTP不久,现在要用到数据库检查点就查了一天关于数据库的访问方法,不停的调试.最后终于可以访问成功了.但一般情况下我只需要返回查询结果,所以就把查询的过程定义在一个vbs中,查询时只需要改变查询语句即可.我写的方法及调用过程如下,目前能使用,请大家帮忙看看有啥要注意或者修改的(oracle数据库)

vbs中定义的内容:
Dim db_ip,db_user,db_pwd,db_sid
db_ip="160.0.0.153"                        '数据库服务器IP
db_user="2008"                '访问数据库用户名
db_pwd="08"                                        '访问数据库密码
db_sid="ora01"                                '数据库服务器实例名

'定义方法GetRES,用户执行sql语句,将执行结果返回.传入的参数是执行的sql
Public Function GetRES(ByRef sql)
   Set cnn=CreateObject("adodb.connection")
   cnn.open ="DRIVER={Oracle in OraHome92};SERVER=" & db_id & "UID=" & db_user & ";PWD=" & db_pwd & ";DBQ=" & db_sid & ";DBA=W;APA=T;EXC=F;XSM=Default;FEN=T;QTO=T;FRC=10;FDL=10;LOB=T;RST=T;GDE=F;FRL=Lo;BAM=IfAllSuccessful;MTS=F;MDI=Me;CSR=F;FWC=F;PFC=10;TLO=O;"
   Set res=CreateObject("adodb.recordset")
   res.open sql,cnn,1,1
   Set GetRES=res
   Set cnn=Nothing
   Set res=nothing
End Function


调用的一个例子:
Dim mysql,sp_code,sp_name
Set myres=createobject("adodb.recordset")
mysql="select sp_code,sp_name from base_spcatalog where sp_id='eam08010b1ae2b2c000f'"
set myres=GetRES(mysql)
sp_code=myres("sp_code")
print sp_code
sp_name=myres("sp_name")
print sp_name
Set myres=nothing

dreamever 发表于 2009-4-17 15:50:29

挺好,能满足自己的测试需求就行了.

virgolong 发表于 2009-4-19 23:22:33

自己发现两个问题
第一个就是此连接串只支持9i数据库,在10g下就用不了了,所以改用OraOLEDB方式连接数据库,连接字符串
cnn.open= "Provider=OraOLEDB.Oracle.1; Password=" & db_pwd &"; Persist Security Info=True;User ID=" & db_user &" ;Data Source=" & db_sid & ";Server=" & db_ip & ";"

第二个问题就是,若查询结果有多个,函数返回值只有第一条查询记录。请问下怎么修改下么?
其实我对数据库访问不熟,都是比葫芦画瓢

virgolong 发表于 2009-4-20 09:54:59

自己快撞墙了,发觉调用是没问题的
在调试的例子中还写的set myres=GetRES(mysql)
但当我用时就忘了写set了
就这个小问题查资料搞了我半天时间:Q

ls_721521 发表于 2009-4-20 10:04:23

原帖由 virgolong 于 2009-4-19 23:22 发表 http://bbs.51testing.com/images/common/back.gif
自己发现两个问题
第一个就是此连接串只支持9i数据库,在10g下就用不了了,所以改用OraOLEDB方式连接数据库,连接字符串
cnn.open= "Provider=OraOLEDB.Oracle.1; Password=" & db_pwd &"; Persist Security Info= ...

Set res = CreateObject("ADODB.RecordSet")   '创建一个记录集对象
res.MoveFirst      '将记录集游标指到记录集的最开始
   Do
    print cstr(res(0))&":"&cstr(res(1))&":"&cstr(res(3))
      res.MoveNext
   Loop until res.eof = true

virgolong 发表于 2009-4-20 10:07:56

多谢ls_721521指点,这个问题终于搞定了

ls_721521 发表于 2009-4-20 10:12:47

原帖由 virgolong 于 2009-4-20 10:07 发表 http://bbs.51testing.com/images/common/back.gif
多谢ls_721521指点,这个问题终于搞定了
客气,我也是现学现卖,现在也在自己弄qtp脚本。共同学习。

virgolong 发表于 2009-4-20 10:17:05

呵呵,我是才学习,一般遇到问题都会搜索怎么处理,但有时的确折腾很久搞不定,公司给的时间不大充足。虽然干劲还是十足的,周末都在搞这玩意
页: [1]
查看完整版本: 大家帮忙看看关于数据库访问的方法正确不