wonew1228 发表于 2006-12-12 16:48:16

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:21

建立数据库连接

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:53

谢谢各位!我这样做了,不知道那错了,给看看!
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:27

感觉逻辑上有点问题,你应该先判断数据库连接是否成功,然后再做执行查询的操作。而且脚本里的第一行,少了个分号,不知道是误写还是实际存在,如果数据库连接成功的话,应该是没有问题的。

[ 本帖最后由 piao_604 于 2006-12-13 10:17 编辑 ]

piao_604 发表于 2006-12-13 10:20:44

感觉逻辑上有点问题,你应该先判断数据库连接是否成功,然后再做执行查询的操作。而且脚本里的第一行,少了个分号,不知道是误写还是实际存在,如果数据库连接成功的话,应该是没有问题的。

wonew1228 发表于 2006-12-13 10:52:34

感谢各位的答复!我贴上去的是我在调试中写的,所以逻辑有点乱,不过感谢你的建议,我以后会在这方面注意的!谢谢你们!

wonew1228 发表于 2006-12-13 12:40:19

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:18

谢谢各位!在大家的帮助下,第一个问题终于解决了,有谁知道第二个和第三个问题的解决方法,请赐教!谢谢!

piao_604 发表于 2006-12-13 16:20:49

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:05

谢谢piao_604 多次指点,还有一个问题,db_disconnect("query1")得到的值是-10160是说明数据库连接关闭了吗?

gp_jl 发表于 2006-12-23 18:32:12

Error Code                               Number                            Description
E_SESSION_NOT_
STARTED                               -10160                The database session was not started.

foxmishy 发表于 2006-12-30 10:52:28

收藏,不错的帖子。我也要进行类似的应用。
页: [1]
查看完整版本: WR中我添加数据后,查询数据库验证出现错误!高手给看看!!!