QTP连接oracle并操作数据库的方法

发表于:2012-05-04来源:测试窝作者:胡志超  点击数: 标签:qtp
QTP连接oracle并操作数据库的方法这里以oracle 9i为例子,其他的数据库连接方法是相通的。 a.首先要在本机建议ODBC数据源,这个属于基本操作,这里不讲,跳过;

  QTP连接oracle并操作数据库的方法这里以oracle 9i为例子,其他的数据库连接方法是相通的。

  a.首先要在本机建议ODBC数据源,这个属于基本操作,这里不讲,跳过;

  b.获取oracle的连接串的方法,在本地新建一个.txt文件,修改扩展名名*.udl,双击*.udl文件,打开数据库链接属性,定位到“提供程序”选显卡,选中 oracle的连接 oracle provider for OLE DB,点击下一步,输入数据源,数据库用户名以及密码,点击测试连接,然后用UE或记事本打开*.udl文件,oracle的连接串已经生成了,例如

  Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=test;Data Source=192.168.13.19

  以上就是udl文件生成的oracle连接串

  现在我们需要手动添加一个oracle连接串的密码字段Password,插入到User ID后面,中间用分号隔开;

  即 Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=test;;Password=test;Data Source=192.168.13.19

  c.在qtp中来连接数据库

  Dim Cnn '定义一个数据库连接串

  Set Cnn = CreateObject("ADODB.Connection")

  Cnn.ConnectionString ="Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=test;Password=test;Data Source=31"

  Cnn.Open '打开数据库连接

  If Cnn.State = 0 Then '判断数据库连接是否成功

  Reporter.ReportEvent micFail, "testing", "连接数据库失败"

  else

  Reporter.ReportEvent micPass, "testing", "连接数据库成功"

  End If

  if Cnn.State<> 0 then

  Set Rs=CreateObject("ADODB.Recordset") '生成记录集对象

  strsql ="Select * from t_sys_user" '从数据库中查询t_sys_user的所有记录

  Rs.Open strsql ,Cnn,1,3 '执行sql语句,记录可以自由移动,单数记录处于只读模式

  ydl=Rs("USER_ID") '取得字段为USER_ID的记录,游标定义在第一行,所以取得的是该字段所在行的第一行数据

  msgbox ydl

  dim a

  a="1188" '该a的数据库可以从外部获取,可以是某个页面的某个值,拿来跟数据库中的值做比较

  for i=1 to Rs.Recordcount '开始遍历数据库中所有的行数,Rs.Recordcount表示统计数据库表的总记录数

  if Rs("USER_ID")=a then '将数据库中USER_ID字段的值与变量a进行挨个比较,

  msgbox "a在数据库中存在"

  exit for '如果找到记录a,则推出for循环

  else

  Rs.MoveNext '如果数据库中的值与a不相等的话,那么在数据库中将游标移到下一行

  end if

  next

  end if

  RS.close '关闭记录集

  Set RS=nothing '释放对象

  Cnn.Close '关闭数据连接

  Set Cnn=nothing '释放对象

  另外,如果要判断游标是否到最好一行,则用

  For i=1 to Rs.Recordcount

  If Rst.EOF Then

  msgbox "已经达到数据库最后一行记录"

  Exit for

  else

  Rst.MoveNext

  End If

  Next

  、RecordSet对象的详细用法

  RecordSet对象(代表来自基本表或命令执行结果的记录的全集。)

  为了更精确地跟踪数据,要用RecordSet组件创建包含数据的游标,游标就是储存在内存中的数据:

  rs = Server.CreateObject("ADODB.RecordSet")

  rs.Open(sqlStr,conn,1,A)

  RS.OPEN SQL,CONN,A,B

  A:

  ADOPENFORWARDONLY(=0)

  只读,且当前数据记录只能向下移动

  ADOPENKEYSET(=1)

  只读,当前数据记录可自由移动

  ADOPENDYNAMIC(=2)

  可读写,当前数据记录可自由移动

  ADOPENSTATIC(=3)

  可读写,当前数据记录可自由移动,可看到新增记录

  B:

  ADLOCKREADONLY(=1)

  缺省锁定类型,记录集是只读的,不能修改记录

  ADLOCKPESSIMISTIC(=2)

  悲观锁定,当修改记录时,数据提供者将尝试锁定记录以确保成功地编辑记录。只要编辑一开始,则立即锁住记录。

  ADLOCKOPTIMISTIC(=3)

  乐观锁定 ,直到用Update方法提交更新记录时才锁定记录。

  ADLOCKBATCHOPTIMISTIC(=4)

  批量乐观锁定,允许修改多个记录,只有调用UpdateBatch方法后才锁定记录。

  当不需要改动任何记录时,应该使用只读的记录集,这样提供者不用做任何检测。

  对于一般的使用,乐观的锁定可能是最好的选择,因为记录只被锁定一小段时间,

  数据在这段时间被更新。这减少了资源的使用。

  在RecordSet组件中,常用的属性和方法有:

  rs.Fields.Count:RecordSet对象字段数。

  rs(i).Name:第i个字段的名称,i为0至rs.Fields.Count-1

  rs(i):第i个字段的数据,i为0至rs.Fields.Count-1

  rs("字段名"):指定字段的数据。

  rs.RecordCount:数据记录总数。

  rs.EOF:是否最后一条记录。

  rs.MoveFirst:指向第一条记录。

  rs.MoveLast:指向最后一条记录。

  rs.MovePrev:指向上一条记录。

  rs.MoveNext:指向下一条记录。

原文转自:http://www.ltesting.net