51Testing软件测试论坛

标题: WR中我添加数据后,查询数据库验证出现错误!高手给看看!!! [打印本页]

作者: wonew1228    时间: 2006-12-12 16:48
标题: WR中我添加数据后,查询数据库验证出现错误!高手给看看!!!
我在一个添加界面添加一个用户后,我哪个不能用数据库检查点实现,所以我想用   Insert>get text 取出 其中的会员编码(user_no),然后看数据库中是否有这条记录,如果有,则重新输入。在这个过我有一下问题:
1.建立数据库的连接,
2.连接好后,根据get text 怎样能查询出他的记录或者记录的条数!
我这样做了,不知道那错了,给看看!
sql="select user_no from sysadmin_sys_user where user_no='xue123'"
        db_connect("query1","DRIVER={Oracle in ora92};SERVER=ORAC9I;UID=SEDS;PWD=SEDS;DBQ=ORAC9I;DBA=W;APA=T;EXC=F;XSM=Default;FEN=T;QTO=T;FRC=10;FDL=10;LOB=T;RST=T;GDE=F;FRL=Lo;BAM=IfAllSuccessful;MTS=F;MDI=Me;CSR=F;FWC=F;PFC=10;TLO=O;",30);
        ddt_open("sysadmin_sys_user",DDT_MODE_READ);
        db_execute_query("query1",sql,recorder_number);
        report_msg(recorder_number);
if(db_connect("query1","DRIVER={Oracle in ora92};SERVER=ORAC9I;UID=SEDS;PWD=SEDS;DBQ=ORAC9I;DBA=W;APA=T;EXC=F;XSM=Default;FEN=T;QTO=T;FRC=10;FDL=10;LOB=T;RST=T;GDE=F;FRL=Lo;BAM=IfAllSuccessful;MTS=F;MDI=Me;CSR=F;FWC=F;PFC=10;TLO=O;",30)==E_OK)
  report_msg("测试连接成功");
else  
   {
   report_msg("测试连接失败!");
   }
我的测试结果是,提示:测试连接成功!recorder_number=-1(应该为1);但我在数据库中查到有一条信息!我的连接或者操作错在那了?

错在那了,各位大侠指点一下!谢谢!

[ 本帖最后由 wonew1228 于 2006-12-12 18:44 编辑 ]
作者: wmxli    时间: 2006-12-12 17:20
标题: 建立数据库连接
1.在本机配置ODBC;
2.然后用winrunner的TSL db_connect("flcp",""DSN=flcp;UID=poweruser;PWD=power;SERVER=drflcp;",30)
不知道你的数据库是什么,这是ORACLE的连接方式

3.获取会员编码可以用edit_get_text("窗口的名字",text);
4.连接好后,查询他的记录条数的方法
  db_execute_query("flcp","select * from 表 where 表字段=text",record_number);
其中record_number就是查询出来满足条件的记录.
作者: wonew1228    时间: 2006-12-12 17:27
谢谢各位!我这样做了,不知道那错了,给看看!
sql="select user_no from sysadmin_sys_user where user_no='xue123'"
        db_connect("query1","DRIVER={Oracle in ora92};SERVER=ORAC9I;UID=SEDS;PWD=SEDS;DBQ=ORAC9I;DBA=W;APA=T;EXC=F;XSM=Default;FEN=T;QTO=T;FRC=10;FDL=10;LOB=T;RST=T;GDE=F;FRL=Lo;BAM=IfAllSuccessful;MTS=F;MDI=Me;CSR=F;FWC=F;PFC=10;TLO=O;",30);
        ddt_open("sysadmin_sys_user",DDT_MODE_READ);
        db_execute_query("query1",sql,recorder_number);
        report_msg(recorder_number);
if(db_connect("query1","DRIVER={Oracle in ora92};SERVER=ORAC9I;UID=SEDS;PWD=SEDS;DBQ=ORAC9I;DBA=W;APA=T;EXC=F;XSM=Default;FEN=T;QTO=T;FRC=10;FDL=10;LOB=T;RST=T;GDE=F;FRL=Lo;BAM=IfAllSuccessful;MTS=F;MDI=Me;CSR=F;FWC=F;PFC=10;TLO=O;",30)==E_OK)
  report_msg("测试连接成功");
else  
   {
   report_msg("测试连接失败!");
   }
我的测试结果是,提示:测试连接成功!recorder_number=-1(应该为1);但我在数据库中查到有一条信息!我的连接或者操作错在那了?

再次感谢给为大侠的热心帮助!谢谢!

[ 本帖最后由 wonew1228 于 2006-12-12 17:33 编辑 ]
作者: piao_604    时间: 2006-12-13 10:13
感觉逻辑上有点问题,你应该先判断数据库连接是否成功,然后再做执行查询的操作。而且脚本里的第一行,少了个分号,不知道是误写还是实际存在,如果数据库连接成功的话,应该是没有问题的。

[ 本帖最后由 piao_604 于 2006-12-13 10:17 编辑 ]
作者: piao_604    时间: 2006-12-13 10:20
感觉逻辑上有点问题,你应该先判断数据库连接是否成功,然后再做执行查询的操作。而且脚本里的第一行,少了个分号,不知道是误写还是实际存在,如果数据库连接成功的话,应该是没有问题的。
作者: wonew1228    时间: 2006-12-13 10:52
感谢各位的答复!我贴上去的是我在调试中写的,所以逻辑有点乱,不过感谢你的建议,我以后会在这方面注意的!谢谢你们!
作者: wonew1228    时间: 2006-12-13 12:40
db_connect("query1","DRIVER={Oracle in ora92};SERVER=ORAC9I;UID=SEDS;PWD=SEDS;DBQ=ORAC9I;DBA=W;APA=T;EXC=F;XSM=Default;FEN=T;QTO=T;FRC=10;FDL=10;LOB=T;RST=T;GDE=F;FRL=Lo;BAM=IfAllSuccessful;MTS=F;MDI=Me;CSR=F;FWC=F;PFC=10;TLO=O;",30);
        
                if(db_connect("query1","DRIVER={Oracle in ora92};SERVER=ORAC9I;UID=SEDS;PWD=SEDS;DBQ=ORAC9I;DBA=W;APA=T;EXC=F;XSM=Default;FEN=T;QTO=T;FRC=10;FDL=10;LOB=T;RST=T;GDE=F;FRL=Lo;BAM=IfAllSuccessful;MTS=F;MDI=Me;CSR=F;FWC=F;PFC=10;TLO=O;",30)==E_OK)
                {
                 report_msg("测试连接成功");
                 }
                else  
                   {
                          report_msg("测试连接失败!");
                   }
                ddt_open("sysadmin_sys_user",DDT_MODE_READ);
                sql="select sysadmin_sys_user.user_no from sysadmin_sys_user where sysadmin_sys_user.user_no='851'";
                db_execute_query("query1",sql,recorder_number);
                report_msg(recorder_number);
                while(recorder_number == 1)
                {       
               
                if(recorder_number >= 1)
                {
                        report_msg("该会员编码已经存在,产生随机");
               
                        srand();
                        i = 1+int(rand()*1000);
                        text = sprintf("%s", i);
                        #text ="xue"&&tmptext;  #在这块想实现xue加数字如xue123,    我那样做正确吗?
                        report_msg(text);
                        sql="select sysadmin_sys_user.user_no from sysadmin_sys_user where sysadmin_sys_user.user_no='text'";
                        db_execute_query("ORAC9I",sql,recorder_number);
                        report_msg(recorder_number);
                       
                }
                }
                if(recorder_number==0)       
                {
                       
                        ddt_close(sysadmin_sys_user);

                        db_disconnect("query1");
                        if(db_connect("query1","DRIVER={Oracle in ora92};SERVER=ORAC9I;UID=SEDS;PWD=SEDS;DBQ=ORAC9I;DBA=W;APA=T;EXC=F;XSM=Default;FEN=T;QTO=T;FRC=10;FDL=10;LOB=T;RST=T;GDE=F;FRL=Lo;BAM=IfAllSuccessful;MTS=F;MDI=Me;CSR=F;FWC=F;PFC=10;TLO=O;",30)==E_OK)
                                {
                                 report_msg("关闭连接失败");
                                 }
                        else  
                           {
                          report_msg("关闭连接成功!");
                           }
                }


现在有几个问题,大家看看,
1.在while循环中的最后一句report_msg(recorder_number);中得到的数据是0,但实际上在数据库中有那个值;
2.用db_disconnect("query1");数据库断开连接失败!怎么回事啊
3.用text ="xue"&&tmptext;  #在这块想实现xue加数字如xue123,    我那样做正确吗?
作者: wonew1228    时间: 2006-12-13 15:50
谢谢各位!在大家的帮助下,第一个问题终于解决了,有谁知道第二个和第三个问题的解决方法,请赐教!谢谢!
作者: piao_604    时间: 2006-12-13 16:20
2.断开连接后的,判断有问题,为什么不直接用db_disconnect("query1")它的返回值直接进行判断,而用连接的判断
3.  tmptext= sprintf("%s", i); #取得一个随机的数字
     text ="xue"&tmptext ;   #得到一个类似xue123的字符串
     sql="select sysadmin_sys_user.user_no from sysadmin_sys_user where sysadmin_sys_user.user_no='"&text"\'"; #text是个变量
作者: wonew1228    时间: 2006-12-13 17:04
谢谢piao_604 多次指点,还有一个问题,db_disconnect("query1")得到的值是-10160是说明数据库连接关闭了吗?
作者: gp_jl    时间: 2006-12-23 18:32
Error Code                                 Number                              Description
E_SESSION_NOT_
STARTED                               -10160                  The database session was not started.
作者: foxmishy    时间: 2006-12-30 10:52
收藏,不错的帖子。我也要进行类似的应用。




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2