51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 4819|回复: 6
打印 上一主题 下一主题

[原创] QTP链接数据库,是不是一定要先建立ODBC连接?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2011-5-30 16:41:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1.首先安装mysql数据驱动,qtp在windows系统下操作连接mysql,所以下载mysql-connector-odbc-   5.1.8-win32.msi
   下载地址:http://mysql.mirrors.pair.com/Downloads/Connector-ODBC/5.1/mysqlconnector-odbc-5.1.8-win32.msi
2.安装mysql驱动 ,默认安装即可。
3. 添加默认数据源
   控制面板->管理工具->数据源ODBC->系统DNS->添加->在“创建数据源”对话框中选择
  “Mysql   ODBC 5.1 Driver”->完成->进入连接对话框->填写完后点击“test”,看看是否成功,成功后配置完成。
  
4.qtp脚本实现连接mysql数据库
如果操作了第3步骤,天机了mysql默认数据源,脚本可以写成:Dim Conn
Set Conn=CreateObject("ADODB.Connection")
Const ConnectionString="DSN=mysql_Mail;DATABASE=extmailWD=123456ORT=3306;SERVER=192.168.2.52;UID=root"
'Const ConnectionString="Driver={Mysql ODBC 5.1 Driver};DATABASE=extmailWD=123456ORT=3306;SERVER=192.168.2.52;UID=root"
Conn.Open ConnectionString
If Conn.State<>0
Then
Reporter.ReportEvent micPass,
"testing","连接数据库成功"
else
Reporter.ReportEvent micFail,
"testing","连接数据库失败"
End
If


如果没有进行第3个步骤,没有添加默认数据源,可以用普通方式连接Dim Conn
Set Conn=CreateObject("ADODB.Connection")
'Const ConnectionString="DSN=mysql_Mail;DATABASE=extmailWD=123456ORT=3306;SERVER=192.168.2.52;UID=root"
Const ConnectionString="Driver={Mysql ODBC 5.1 Driver};DATABASE=extmailWD=123456ORT=3306;SERVER=192.168.2.52;UID=root"
Conn.Open ConnectionString
If Conn.State<>0
Then
Reporter.ReportEvent micPass,
"testing","连接数据库成功"
else
Reporter.ReportEvent micFail,
"testing","连接数据库失败"
End
If


5.qtp脚本实现查询数据库Dim Conn,str,sql,i,sum
Set Conn=CreateObject("ADODB.Connection")'创建数据库实例
Const ConnectionString="DSN=mysql_Mail;DATABASE=extmailWD=123456ORT=3306;SERVER=192.168.2.52;UID=root"
'Const ConnectionString="Driver={Mysql ODBC 5.1 Driver};DATABASE=extmail;PWD=123456;PORT=3306;SERVER=192.168.2.52;UID=root"
Conn.Open ConnectionString
If Conn.State<>0
Then
    Reporter.ReportEvent micPass,
"testing","连接数据库成功"
else
    Reporter.ReportEvent micFail,
"testing","连接数据库失败"
End
If
Set str=CreateObject("ADODB.Recordset")'创建数据集实例

'查询数据库
sql="Select  *  from manager where type='postmaster'"
str.Open sql,conn,
1,1
'1,1表示只读;1,3表示插入数据;2,3表示修改数据
str.MoveFirst'使游标指向第一个记录
sum=""
While
Not  str.EOF
   
'msgbox str.Fields("username")

For i=0
to str.Fields.Count-1'str.Fields.Count表示字段个数
    sum=sum & str(i) &
"
"
'把整个记录显示出来

Next
    Print sum
& vbCRLF'打印所有查询的记录
    str.MoveNext'使游标进入下一个
Wend

str.Close      
'关闭数据集实例
Set str=Nothing
Conn.Close  
'关闭数据库实例
Set Conn=Nothing


============================================================
如果没有进行第3个步骤,没有添加默认数据源,可以用普通方式连接

ConnectionString="Driver={Mysql ODBC 5.1 Driver};
1. Mysql ODBC 5.1 Driver是odbc数据驱动的名称吗?
2. 如果mysql是安装在ubuntu系统下,且ubuntu系统中已安装了odbc驱动,那么这个Driver该怎么写?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2011-5-31 17:03:47 | 只看该作者
不需要吧,这里有发过几个函数的http://bbs.51testing.com/thread-374191-1-1.html
不过这种用法参数较多,比较繁琐,最好把tns做在配置文件中去读

  1. '******************************************************************************************
  2. '设计说明: 从数据库中抓取指定表和列的数据,依赖ORAOLEDB组件的正常使用,不用创建数据源,不用配置连接串
  3. '程序输入:
  4. '                1. DBUserName -- 数据库用户名
  5. '                2. DBHostAddress -- 数据库主机的域名或IP
  6. '                3. DBServerPort -- 数据库主机的端口
  7. '                4. DBSid -- 数据库实例SID
  8. '                5. DBPassWord -- 数据库用户的密码
  9. '                6. sqlText -- 要执行的sql语句
  10. '                7. tableColumn -- 要抓取的字段
  11. '程序输出: 要抓取的字段
  12. '设计人员:  刘毅(LIUYI)
  13. '设计时间: 2009-09-26
  14. '调用举例: MsgBox FetchDBDataOle("select * from plan","plan_code","A","10.31.10.105","1555","B","C")
  15. '******************************************************************************************

  16. Public Function FetchDBData(DBUserName,DBHostAddress,DBServerPort,DBSid,DBPassWord,sqlText,tableColumn)
  17.         On Error Resume Next
  18.         Set DBRec=createobject("adodb.recordset")
  19.         Set DBCon=createobject("adodb.Connection")
  20.        
  21.         DBCon.ConnectionString="Provider=""OraOLEDB.Oracle"";User ID="&_                       
  22.         DBUserName &";Data Source=""(description =(address = (protocol = tcp)(host = "&_
  23.         DBHostAddress &")(port = "&_
  24.         DBServerPort&"))(connect_data =(sid = "&_
  25.         DBSid&")))"";Password="&_
  26.         DBPassWord&""
  27.        
  28.         DBCon.Open
  29.         DBRec.Open sqlText,DBCon
  30.         FetchDBData = DBRec.Fields(tableColumn)
  31.         DBCon.Close
  32.         Set DBRec = Nothing
  33.         Set DBCon = Nothing       
  34.         ErrorHandle "FetchDBData"
  35. End Function

  36. '******************************************************************************************
  37. '设计说明: 从数据库中抓取指定表和列的数据,基于MSDAORA对象的使用,不用创建数据源,不用配置连接串
  38. '程序输入:
  39. '                1. DBUserName -- 数据库用户名
  40. '                2. DBHostAddress -- 数据库主机的域名或IP
  41. '                3. DBServerPort -- 数据库主机的端口
  42. '                4. DBSid -- 数据库实例SID
  43. '                5. DBPassWord -- 数据库用户的密码
  44. '                6. sqlText -- 要执行的sql语句
  45. '                7. tableColumn -- 要抓取的字段
  46. '程序输出: 要抓取的字段
  47. '设计人员:  刘毅(LIUYI)
  48. '设计时间: 2009-09-26
  49. '调用举例: MsgBox FetchDBData("select * from plan","plan_code","A","10.31.10.105","1555","B","C")
  50. '******************************************************************************************

  51. Public Function FetchDBDataMSDAORA(DBUserName,DBHostAddress,DBServerPort,DBSid,DBPassWord,sqlText,tableColumn)
  52.         On Error Resume Next
  53.         Set DBCon = CreateObject("ADODB.Connection")
  54.         Set DBRec = CreateObject("ADODB.RecordSet")
  55.        
  56.         DBCon.Open = "Provider=""MSDAORA.Oracle"";User ID="&_
  57.         DBUserName&";Data Source=""(description =(address = (protocol = tcp)(host = "&_
  58.         DBHostAddress &")(port = "&_
  59.         DBServerPort&"))(connect_data =(sid = "&_
  60.         DBSid&")))"";Password="&_
  61.         DBPassWord&""
  62.        
  63.         DBRec.OPEN sqlText,DBCon
  64.         FetchDBDataMSDAORA = DBRec.fields(tableColumn)       
  65.         DBCon.close
  66.         Set DBCon =Nothing
  67.         Set DBRec = Nothing       
  68.         ErrorHandle "FetchDBDataMSDAORA"
  69. End Function

  70. '******************************************************************************************
  71. '设计说明: 按照传入SQL修改数据库的值,依赖ORAOLEDB组件的正常使用,不用创建数据源,不用配置连接串
  72. '程序输入:
  73. '                1. DBUserName -- 数据库用户名
  74. '                2. DBHostAddress -- 数据库主机的域名或IP
  75. '                3. DBServerPort -- 数据库主机的端口
  76. '                4. DBSid -- 数据库实例SID
  77. '                5. DBPassWord -- 数据库用户的密码
  78. '                6. sqlText -- 要执行的sql语句
  79. '程序输出: 无
  80. '设计人员:  刘毅(LIUYI)
  81. '设计时间: 2009-09-26
  82. '调用举例: Call ModifyDBDataOle("A","10.31.10.105","1555","B","C","update Test set colNum = 'A' where colNum = 'B'")
  83. '******************************************************************************************

  84. Public Function ModifyDBData(DBUserName,DBHostAddress,DBServerPort,DBSid,DBPassWord,sqlText)
  85.         On Error Resume Next
  86.         Set DBRec=createobject("adodb.recordset")
  87.         Set DBCom=createobject("adodb.command")       
  88.        
  89.         DBCom.activeconnection="Provider=""OraOLEDB.Oracle"";User ID="&_
  90.         DBUserName&";Data Source=""(description =(address = (protocol = tcp)(host = "&_
  91.         DBHostAddress&")(port = "&_
  92.         DBServerPort&"))(connect_data =(sid = "&_
  93.         DBSid&")))"";Password="&_
  94.         DBPassWord&""
  95.        
  96.         DBCom.CommandType = 1       
  97.         DBCom.CommandText = sqlText
  98.         Set DBRec = DBCom.Execute()       
  99.         DBCom.CommandText = "commit"
  100.         Set DBRec = DBCom.Execute()       
  101.         Set DBRec = Nothing
  102.         Set DBCom = Nothing       
  103.         ModifyDBData = ErrorHandle("ModifyDBData")
  104. End Function       

  105. '******************************************************************************************
  106. '设计说明: 按照传入SQL修改数据库的值,基于MSDAORA对象的使用,不用创建数据源,不用配置连接串
  107. '程序输入:
  108. '                1. DBUserName -- 数据库用户名
  109. '                2. DBHostAddress -- 数据库主机的域名或IP
  110. '                3. DBServerPort -- 数据库主机的端口
  111. '                4. DBSid -- 数据库实例SID
  112. '                5. DBPassWord -- 数据库用户的密码
  113. '                6. sqlText -- 要执行的sql语句
  114. '程序输出: 无
  115. '设计人员:  刘毅(LIUYI)
  116. '设计时间: 2009-09-26
  117. '调用举例: Call ModifyDBData("A","10.31.10.105","1555","B","C","update Test set colNum = 'A' where colNum = 'B'")
  118. '******************************************************************************************

  119. Public Function ModifyDBDataMSDAORA(DBUserName,DBHostAddress,DBServerPort,DBSid,DBPassWord,sqlText)
  120.         On Error Resume Next
  121.         Set DBCon = CreateObject("ADODB.Connection")
  122.         Set DBRec = CreateObject("ADODB.RecordSet")       
  123.        
  124.         DBCon.Open = "Provider=""MSDAORA.Oracle"";User ID="&_
  125.         DBUserName&";Data Source=""(description =(address = (protocol = tcp)(host = "&_
  126.         DBHostAddress &")(port = "&_
  127.         DBServerPort&"))(connect_data =(sid = "&_
  128.         DBSid&")))"";Password="&_
  129.         DBPassWord&""
  130.        
  131.         DBRec.OPEN sqlText,DBCon
  132.         DBRec.OPEN "commit",DBCon       
  133.         DBCon.Close
  134.         Set DBCon =Nothing
  135.         Set DBRec = Nothing       
  136.         ModifyDBDataMSDAORA = ErrorHandle("ModifyDBDataMSDAORA")
  137. End Function
复制代码
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2011-6-11 15:20:32 | 只看该作者
不需要吧,我记得我就没安装过,附加数据库就行了
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2011-6-13 10:47:54 | 只看该作者
关注学习ing……
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2011-6-13 17:05:54 | 只看该作者
是的,安装一个Mysql的jdbc驱动,然后再在连接字符串里直接使用这个jdbc驱动名

   strConnectionString = "DRIVER={MySQL ODBC 5.1 Driver};SERVER=192.168.0.28;DATABASE=regcode_protect;User Id=rootassWord=123456"
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2011-7-23 11:26:58 | 只看该作者
回复 1# FLY000


    版主我有一个问题:

我现在用的是wamp安装包,里面包含了php+mysql+apache.那么我现在配置这个数据源驱动还要单独下载mysql驱动吗?

还有一个就是 飞机订票系统操作的数据库就是ODBC中设置的.mdb文件    这句话我要怎么去设置才能运用啊?  我是在 《QTP从实践到精通》一书中低37页 设置及录制一节中看到这个设置订票系统的ODBC。不知道怎么设置的。。。。

好头疼啊...
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2015-4-20 09:58:10 | 只看该作者
如果有bug,数据库没有查询到内容,“str.MoveFirst”操作会弹出异常框,整个自动化停止,这个楼主怎么办呢?晚上跑全量自动化,早上来发现一直卡在这里。
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-6-3 00:05 , Processed in 0.086926 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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