51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3097|回复: 16
打印 上一主题 下一主题

[原创] 连接ORACLE 我要装ORACLE ADD-IN 吗

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2006-7-3 17:50:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Dim Cnn
Set Cnn = CreateObject("ADODB.Connection")
Cnn.ConnectionString = "Provider=OraOLEDB.Oracle.1;Data Source=oracletest;Password=nhgtfctest001;User ID=nhgtfc001;Persist Security Info=True"

Cnn.Open
If Cnn.State = 0 Then
     Reporter.ReportEvent micFail, "testing", "连接数据库失败"
else
     Reporter.ReportEvent micPass, "testing",   "连接数据库成功"
End If

'-----------我定义了ODBC连接,ODBC的数据源名是ORACLETEST,测试ODBC连接也通过,但出现“无法处理服务名”,我要装ORACLE ADD-IN 吗?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2006-7-3 17:58:14 | 只看该作者
只是连接数据库的话,我想不需要插件的.参考一下这段代码
Dim res,cmd,sql
Set Res=createobject("adodb.recordset")
Set Cmd=createobject("adodb.command")
Cmd.activeconnection="Provider=SQLOLEDB.1;Password=111111;Persist Security Info=True;User ID=sa;Initial Catalog=xhq;Data Source=192.168.191.142"
Cmd.CommandType = 1
sql="select name from company where (id=1)"
Cmd.CommandText = sql
Set res = Cmd.Execute()
Set res = nothing
Set cmd.ActiveConnection = nothing
Set Cmd= nothing
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2006-7-3 18:05:39 | 只看该作者
改DRIVER为DRIVER={Oracle in OraHome92 }就可以了,

再问取数据表的内容也不需ORACLE -ADD IN,什么时候要呢?
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2006-7-3 18:38:09 | 只看该作者
在录制识别ORACLe控件的时候,需要ORACLE -ADD IN,
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2006-7-3 21:10:14 | 只看该作者
Data Source=oracletest中的"oracletest"需要在tnsnames.ora中定义好。
Provider 要设置为OraOLEDB.这是连接oracle server的.
定义ODBC 数据源时需要driver为: oracle in OraHome92 或 microsoft ODBC for oracle

另外xiaonan版主的脚本中: Provider=SQLOLEDB.1, 是连接SQLSERVER的.
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2006-7-4 08:41:04 | 只看该作者
对,我的那段代码是连接SQL的,因为手头上没oracle来连.其实原理都是一样的,我只是给大家一点参考.
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2006-7-5 13:20:42 | 只看该作者
Dim res,cmd,sql
Set Res=createobject("adodb.recordset")
Set Cmd=createobject("adodb.command")
Cmd.activeconnection="Provider=SQLOLEDB.1;Password=111111;Persist Security Info=True;User ID=sa;Initial Catalog=xhq;Data Source=192.168.191.142"
Cmd.CommandType = 1
sql="select name from company where (id=1)"
Cmd.CommandText = sql
Set res = Cmd.Execute()
Set res = nothing
Set cmd.ActiveConnection = nothing
Set Cmd= nothing
问一下xiaonan版主的这段脚本中,如果希望增加一个检查点,如:当name='admin'的时候,在result report中给出pass的报告,怎样写呢?
我试着写了几个,总报“在对应所需名称或序数的集合中,未找到项目。" 的错误,希望帮助给出正确的脚本,多谢了。
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2006-7-5 13:57:52 | 只看该作者
If name="admin" Then
  Reporter.ReportEvent 0, "pass","pass"
else
  Reporter.ReportEvent 1, "fail","fail"
End If

[ 本帖最后由 xiaonan 于 2006-7-5 14:57 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2006-7-5 14:38:58 | 只看该作者
增加这一段后,不论name是否='admin',都返回到成功.
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2006-7-5 14:51:27 | 只看该作者
你把name值取出来看看,然后单步调试,看看原因
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2006-7-5 15:25:17 | 只看该作者
是这样的,
1. 如果这样写检查语句,在If res.fields(seat_id)=0 Then这行会报“在对应所需名称或序数的集合中,未找到项目。"
sql="select seat_id from fm_seat where seat_id=3086"
Cmd.CommandText = sql
Set res = Cmd.Execute(sql)
If res.fields(seat_id)=0 Then
   Reporter.ReportEvent micpass, "test","output"
else
  Reporter.ReportEvent micfail, "testl","fail"
End If

2.如果按下面这样改写if 语句就会直接pass.但是实际上这个语句:select seat_id from fm_seat where seat_id=3086(查出来的seat_id肯定是3086),所以我觉得应该每次都应该返回失败的。
If seat_id=1 Then
   Reporter.ReportEvent micpass, "test","output"
else
  Reporter.ReportEvent micfail, "testl","fail"
End If
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2006-7-5 16:14:06 | 只看该作者
1   res("seat_id")或者直接res(0)这样来取字段值
2   你不能把字段名直接当变量使用啊

[ 本帖最后由 xiaonan 于 2006-7-5 16:16 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2006-7-5 16:22:37 | 只看该作者
res.fields("seat_id") =0 与res(0)=0 ,都报同样的错误: general run error.
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2006-7-5 16:29:33 | 只看该作者
Dim res,cmd,sql
Set Res=createobject("adodb.recordset")
Set Cmd=createobject("adodb.command")
Cmd.activeconnection="Provider=SQLOLEDB.1;Password=111111;Persist Security Info=True;User ID=sa;Initial Catalog=xhq;Data Source=192.168.191.142"
Cmd.CommandType = 1
sql="select seat_id from fm_seat where seat_id=3086"
Cmd.CommandText = sql
Set res = Cmd.Execute()
是res("seat_id"),还有你单步调试一下啊,具体是哪句出错
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2006-7-5 16:30:50 | 只看该作者
还有要转换一下类型都用整形后再比较
回复 支持 反对

使用道具 举报

该用户从未签到

16#
发表于 2006-7-5 17:47:35 | 只看该作者
已经解决了,谢谢!把解决过程跟大家沟通一下
1〉如果num=res.fields("seat_id"),if num>0 处会报类型不匹配
2〉如果用if int(num)>0, 报语法错误
在QTP中,dim num as int ,dim num as integer时,报 The test run cannot continue duo to a syntax error

后来发现int(num) ,dim num as int 是VB的用法,可能在Expert View中的vb script村在一点小差异,才会发生上面的错误。

最终是用Cint(res.fields("seat_id"))>0 解决了。

另外:前面报那个““在对应所需名称或序数的集合中,未找到项目。" 错误,是由于sql="select seat_id from fm_seat where seat_id=3086" 这个语句没有记录返回。

呵呵,因为初次调试,走了很多弯路。所以今后如果各位版主们能支持更仔细些。再次感谢各位。

回复 支持 反对

使用道具 举报

该用户从未签到

17#
发表于 2006-8-8 11:17:36 | 只看该作者
直接用系统自带的驱动程序就可以了,很快就把连接字符串建立起来了。何必手写呢。
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-26 05:26 , Processed in 0.078464 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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