QTP链接数据库,是不是一定要先建立ODBC连接?
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”,看看是否成功,成功后配置完成。
http://pic002.cnblogs.com/images/2011/275517/2011032211145470.jpg
4.qtp脚本实现连接mysql数据库
如果操作了第3步骤,天机了mysql默认数据源,脚本可以写成:Dim Conn
Set Conn=CreateObject("ADODB.Connection")
Const ConnectionString="DSN=mysql_Mail;DATABASE=extmail;PWD=123456;PORT=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
如果没有进行第3个步骤,没有添加默认数据源,可以用普通方式连接Dim Conn
Set Conn=CreateObject("ADODB.Connection")
'Const ConnectionString="DSN=mysql_Mail;DATABASE=extmail;PWD=123456;PORT=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
5.qtp脚本实现查询数据库Dim Conn,str,sql,i,sum
Set Conn=CreateObject("ADODB.Connection")'创建数据库实例
Const ConnectionString="DSN=mysql_Mail;DATABASE=extmail;PWD=123456;PORT=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
Notstr.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该怎么写? 不需要吧,这里有发过几个函数的http://bbs.51testing.com/thread-374191-1-1.html
不过这种用法参数较多,比较繁琐,最好把tns做在配置文件中去读
'******************************************************************************************
'设计说明: 从数据库中抓取指定表和列的数据,依赖ORAOLEDB组件的正常使用,不用创建数据源,不用配置连接串
'程序输入:
' 1. DBUserName -- 数据库用户名
' 2. DBHostAddress -- 数据库主机的域名或IP
' 3. DBServerPort -- 数据库主机的端口
' 4. DBSid -- 数据库实例SID
' 5. DBPassWord -- 数据库用户的密码
' 6. sqlText -- 要执行的sql语句
' 7. tableColumn -- 要抓取的字段
'程序输出: 要抓取的字段
'设计人员:刘毅(LIUYI)
'设计时间: 2009-09-26
'调用举例: MsgBox FetchDBDataOle("select * from plan","plan_code","A","10.31.10.105","1555","B","C")
'******************************************************************************************
Public Function FetchDBData(DBUserName,DBHostAddress,DBServerPort,DBSid,DBPassWord,sqlText,tableColumn)
On Error Resume Next
Set DBRec=createobject("adodb.recordset")
Set DBCon=createobject("adodb.Connection")
DBCon.ConnectionString="Provider=""OraOLEDB.Oracle"";User ID="&_
DBUserName &";Data Source=""(description =(address = (protocol = tcp)(host = "&_
DBHostAddress &")(port = "&_
DBServerPort&"))(connect_data =(sid = "&_
DBSid&")))"";Password="&_
DBPassWord&""
DBCon.Open
DBRec.Open sqlText,DBCon
FetchDBData = DBRec.Fields(tableColumn)
DBCon.Close
Set DBRec = Nothing
Set DBCon = Nothing
ErrorHandle "FetchDBData"
End Function
'******************************************************************************************
'设计说明: 从数据库中抓取指定表和列的数据,基于MSDAORA对象的使用,不用创建数据源,不用配置连接串
'程序输入:
' 1. DBUserName -- 数据库用户名
' 2. DBHostAddress -- 数据库主机的域名或IP
' 3. DBServerPort -- 数据库主机的端口
' 4. DBSid -- 数据库实例SID
' 5. DBPassWord -- 数据库用户的密码
' 6. sqlText -- 要执行的sql语句
' 7. tableColumn -- 要抓取的字段
'程序输出: 要抓取的字段
'设计人员:刘毅(LIUYI)
'设计时间: 2009-09-26
'调用举例: MsgBox FetchDBData("select * from plan","plan_code","A","10.31.10.105","1555","B","C")
'******************************************************************************************
Public Function FetchDBDataMSDAORA(DBUserName,DBHostAddress,DBServerPort,DBSid,DBPassWord,sqlText,tableColumn)
On Error Resume Next
Set DBCon = CreateObject("ADODB.Connection")
Set DBRec = CreateObject("ADODB.RecordSet")
DBCon.Open = "Provider=""MSDAORA.Oracle"";User ID="&_
DBUserName&";Data Source=""(description =(address = (protocol = tcp)(host = "&_
DBHostAddress &")(port = "&_
DBServerPort&"))(connect_data =(sid = "&_
DBSid&")))"";Password="&_
DBPassWord&""
DBRec.OPEN sqlText,DBCon
FetchDBDataMSDAORA = DBRec.fields(tableColumn)
DBCon.close
Set DBCon =Nothing
Set DBRec = Nothing
ErrorHandle "FetchDBDataMSDAORA"
End Function
'******************************************************************************************
'设计说明: 按照传入SQL修改数据库的值,依赖ORAOLEDB组件的正常使用,不用创建数据源,不用配置连接串
'程序输入:
' 1. DBUserName -- 数据库用户名
' 2. DBHostAddress -- 数据库主机的域名或IP
' 3. DBServerPort -- 数据库主机的端口
' 4. DBSid -- 数据库实例SID
' 5. DBPassWord -- 数据库用户的密码
' 6. sqlText -- 要执行的sql语句
'程序输出: 无
'设计人员:刘毅(LIUYI)
'设计时间: 2009-09-26
'调用举例: Call ModifyDBDataOle("A","10.31.10.105","1555","B","C","update Test set colNum = 'A' where colNum = 'B'")
'******************************************************************************************
Public Function ModifyDBData(DBUserName,DBHostAddress,DBServerPort,DBSid,DBPassWord,sqlText)
On Error Resume Next
Set DBRec=createobject("adodb.recordset")
Set DBCom=createobject("adodb.command")
DBCom.activeconnection="Provider=""OraOLEDB.Oracle"";User ID="&_
DBUserName&";Data Source=""(description =(address = (protocol = tcp)(host = "&_
DBHostAddress&")(port = "&_
DBServerPort&"))(connect_data =(sid = "&_
DBSid&")))"";Password="&_
DBPassWord&""
DBCom.CommandType = 1
DBCom.CommandText = sqlText
Set DBRec = DBCom.Execute()
DBCom.CommandText = "commit"
Set DBRec = DBCom.Execute()
Set DBRec = Nothing
Set DBCom = Nothing
ModifyDBData = ErrorHandle("ModifyDBData")
End Function
'******************************************************************************************
'设计说明: 按照传入SQL修改数据库的值,基于MSDAORA对象的使用,不用创建数据源,不用配置连接串
'程序输入:
' 1. DBUserName -- 数据库用户名
' 2. DBHostAddress -- 数据库主机的域名或IP
' 3. DBServerPort -- 数据库主机的端口
' 4. DBSid -- 数据库实例SID
' 5. DBPassWord -- 数据库用户的密码
' 6. sqlText -- 要执行的sql语句
'程序输出: 无
'设计人员:刘毅(LIUYI)
'设计时间: 2009-09-26
'调用举例: Call ModifyDBData("A","10.31.10.105","1555","B","C","update Test set colNum = 'A' where colNum = 'B'")
'******************************************************************************************
Public Function ModifyDBDataMSDAORA(DBUserName,DBHostAddress,DBServerPort,DBSid,DBPassWord,sqlText)
On Error Resume Next
Set DBCon = CreateObject("ADODB.Connection")
Set DBRec = CreateObject("ADODB.RecordSet")
DBCon.Open = "Provider=""MSDAORA.Oracle"";User ID="&_
DBUserName&";Data Source=""(description =(address = (protocol = tcp)(host = "&_
DBHostAddress &")(port = "&_
DBServerPort&"))(connect_data =(sid = "&_
DBSid&")))"";Password="&_
DBPassWord&""
DBRec.OPEN sqlText,DBCon
DBRec.OPEN "commit",DBCon
DBCon.Close
Set DBCon =Nothing
Set DBRec = Nothing
ModifyDBDataMSDAORA = ErrorHandle("ModifyDBDataMSDAORA")
End Function 不需要吧,我记得我就没安装过,附加数据库就行了 关注学习ing…… 是的,安装一个Mysql的jdbc驱动,然后再在连接字符串里直接使用这个jdbc驱动名
strConnectionString = "DRIVER={MySQL ODBC 5.1 Driver};SERVER=192.168.0.28;DATABASE=regcode_protect;User Id=root;PassWord=123456" 回复 1# FLY000
版主我有一个问题:
我现在用的是wamp安装包,里面包含了php+mysql+apache.那么我现在配置这个数据源驱动还要单独下载mysql驱动吗?
还有一个就是 飞机订票系统操作的数据库就是ODBC中设置的.mdb文件 这句话我要怎么去设置才能运用啊?我是在 《QTP从实践到精通》一书中低37页 设置及录制一节中看到这个设置订票系统的ODBC。不知道怎么设置的。。。。
好头疼啊... 如果有bug,数据库没有查询到内容,“str.MoveFirst”操作会弹出异常框,整个自动化停止,这个楼主怎么办呢?晚上跑全量自动化,早上来发现一直卡在这里。
页:
[1]