51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

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

[原创] qtp添加数据库检查点

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-12-23 11:12:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
开始时我先录制了添加记录功能
然后我添加数据库检查点成功后再执行了一下脚本,那不是要添加两次那条添加记录。
麻烦哪位高人指点一下怎么才能只添加一次记录。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2009-12-23 13:45:09 | 只看该作者
先查后插入啊
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2009-12-23 14:57:14 | 只看该作者

qtp添加数据库检查点

不是应该先录制脚本吗,录制脚本的时候已经添加了一条记录了,再回放时又加一条记录。
先查后插入  具体是怎样实现呀??
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2009-12-23 15:17:15 | 只看该作者
解决办法有几个:
1.可以在脚本中添加SQL语句删除那条新增记录:先新增,然后数据库检查点,然后SQL删除(但是这种方法需要你对表结构非常了解)
2.数据库回复与备份:在准备好环境然后备份数据库,每次跑脚本的时候恢复数据库就可以了(也就是说你在录制新增脚本并添加数据库检查点之后,手工将那条新增记录删除,然后备份数据库,这样就可以循环多次运行脚本了)
3.比较笨的方法了:每次跑脚本手工删除以前添加的记录

我习惯用数据库恢复与备份来做
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2009-12-24 10:22:34 | 只看该作者
呵呵!谢谢你的指点。
mysql自身有数据库备份功能吗?
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2009-12-26 15:59:53 | 只看该作者
你用qtp连接数据库来检查数据是否正确

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

b.获取mysql的连接串的方法,在本地新建一个.txt文件,修改扩展名名*.udl,双击*.udl文件,打开数据库链接属性,定位到“提供程序”选显卡,选中 mysql的连接  mysql provider for OLE DB,点击下一步,输入数据源,数据库用户名以及密码,点击测试连接,然后用UE或记事本打开*.udl文件,mysql的连接串已经生成了,例如
Provider=OLEDB.mysql.1ersist Security Info=False;User ID=test;Data Source=192.168.13.19
以上就是udl文件生成的oracle连接串
现在我们需要手动添加一个mysql连接串的密码字段Password,插入到User ID后面,中间用分号隔开;
即 Provider=mysqlOLEDB.mysql.1ersist Security Info=False;User ID=test;assword=test;Data Source=192.168.13.19
c.在qtp中来连接数据库


Dim Cnn  '定义一个数据库连接串
Set Cnn = CreateObject("ADODB.Connection")
Cnn.ConnectionString ="rovider=OraOLEDB.Oracle.1ersist Security Info=False;User ID=njbosstest;assword=bosstest;Data Source=192.168.13.19 "

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
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2010-1-25 13:07:44 | 只看该作者
这个方法可以,谢谢!
但是在   if    Rs("USER_ID")=a   then   '将数据库中USER_ID字段的值与变量a进行挨个比较,
           msgbox "a在数据库中存在"   
       else
         msgbox "a在数据库中存在"
中我的Rs("USER_ID")和a的值时一样的。可是执行脚本后读的却是下面一条信息。
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-26 21:51 , Processed in 0.073046 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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