51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2580|回复: 7
打印 上一主题 下一主题

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

[复制链接]
  • TA的每日心情
    开心
    2015-9-22 15:26
  • 签到天数: 16 天

    连续签到: 1 天

    [LV.4]测试营长

    跳转到指定楼层
    1#
    发表于 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 & "WD=" & 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=FFC=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
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    该用户从未签到

    2#
    发表于 2009-4-17 15:50:29 | 只看该作者
    挺好,能满足自己的测试需求就行了.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-9-22 15:26
  • 签到天数: 16 天

    连续签到: 1 天

    [LV.4]测试营长

    3#
     楼主| 发表于 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 & ";"

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

    使用道具 举报

  • TA的每日心情
    开心
    2015-9-22 15:26
  • 签到天数: 16 天

    连续签到: 1 天

    [LV.4]测试营长

    4#
     楼主| 发表于 2009-4-20 09:54:59 | 只看该作者
    自己快撞墙了,发觉调用是没问题的
    在调试的例子中还写的set myres=GetRES(mysql)
    但当我用时就忘了写set了
    就这个小问题查资料搞了我半天时间
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
    发表于 2009-4-20 10:04:23 | 只看该作者
    原帖由 virgolong 于 2009-4-19 23:22 发表
    自己发现两个问题
    第一个就是此连接串只支持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
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-9-22 15:26
  • 签到天数: 16 天

    连续签到: 1 天

    [LV.4]测试营长

    6#
     楼主| 发表于 2009-4-20 10:07:56 | 只看该作者
    多谢ls_721521指点,这个问题终于搞定了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2009-4-20 10:12:47 | 只看该作者
    原帖由 virgolong 于 2009-4-20 10:07 发表
    多谢ls_721521指点,这个问题终于搞定了

    客气,我也是现学现卖,现在也在自己弄qtp脚本。共同学习。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-9-22 15:26
  • 签到天数: 16 天

    连续签到: 1 天

    [LV.4]测试营长

    8#
     楼主| 发表于 2009-4-20 10:17:05 | 只看该作者
    呵呵,我是才学习,一般遇到问题都会搜索怎么处理,但有时的确折腾很久搞不定,公司给的时间不大充足。虽然干劲还是十足的,周末都在搞这玩意
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-10-7 18:20 , Processed in 0.093381 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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