51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 3007|回复: 5
打印 上一主题 下一主题

关于winrunner的数据库DML操作

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2005-9-15 20:41:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教各位大虾,winrunner 是否能进行数据库的DML(insert,delete等)操作。
我试了半天,好像不行。我想在脚本运行前先在数据库插入测试数据,然后进行测试。有没有好的方法推荐。谢谢先
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2005-9-16 09:48:48 | 只看该作者
好像不行得,自己拿VB,或者PB做个数据库前台吧,简单的
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2005-9-25 18:12:40 | 只看该作者

找到了原来db_execute_query 是支持DML操作的,并且直接提交事务

如下是我找到的资料(转载)。大家可以参照如下方法使用。

一般主要是插入记录,删除,修改,查询记录。这几种方式。

例子如下:

### db_connectd的连接串,根据需要可以修改,数据库连接相关参数

### DSN=wdzdb是数据库名字(wdzdb数据源odbc名字)

### UID=TEST (数据库用户名字=TEST)

### PWD=TEST (数据库用户密码=TEST)

### DBQ=WDZDB 数据库服务名字



## -- Create table

## create table DEPT

## (

## DEPTNO NUMBER(2) not null,

## DNAME VARCHAR2(14),

## LOC VARCHAR2(13)

## )

### DEPT 数据表的初始数据如下

## DEPTNO DNAME LOC

## 1 xxx loc1

## 2 bbb loc2

## 3 mmm loc3

r= db_connect("testsession","DSN=wdzdb;UID=TEST;PWD=TEST;DBQ=WDZDB",30);

if(r==E_OK){

db_execute_query ("testsession","SELECT * FROM dept",record_number);

### ******获得查询结果记录数量,这里有点问题,不能够取回记录数量

print(" query record num="&record_num);



###读取当前数据表的字段列表

db_get_headers ("testsession",field_num,headers);

print("## dept table headers ---");

print(headers); ###打印出当前数据表的字段列表

db_get_row("testsession","#0",rowData);###获取当前数据表第一行记录的内容

print("## current row Data");###打印出当前数据表第一行记录的内容

print(rowData );



###读取当前数据表 第1行第2个字段的内容

aaa =db_get_field_value("testsession","#0","#1");## #0实际上就是第一行记录

print("DNAME="&aaa);



###插入记录到数据表dept

#### 插入1个记录到数据表

db_execute_query("testsession","insert into dept values (4,'aa','bb')",i);



i=10;

for(i=10;i<12;i++){

## db_execute_query("testsession","insert into dept (DEPTNO)values("+i+")",k);

#db_execute_query("testsession","insert into dept values ("&k&",'aa','bb')",k);

}



#### 修改记录到数据表

r=db_execute_query("xxx","update dept set DNAME='xxx' where DEPTNO=1",i);

if(r!=E_OK){

print(" ***update当前数据表的内容失败!");

}



###删除当前数据表的内容

r=db_execute_query("testsession","delete from dept where DEPTNO=2",i);

if(r!=E_OK){

print(" *** 删除当前数据表的内容失败!");

}



}

else{

print(" open connection fail");

}



db_disconnect("testsession");
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2005-9-28 20:35:55 | 只看该作者
高人啊,let me try
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2005-9-28 21:46:15 | 只看该作者
业已验证,PASS!!

收藏了,多谢!

都是executes the query based on the SQL statement and creates a record set这一句惹得祸,断章取义以为只能执行查询!

另外:
db_execute_query ("testsession","SELECT * FROM dept",record_number);

### ******获得查询结果记录数量,这里有点问题,不能够取回记录数量

print(" query record num="&record_num);


这一句我的脚本也通过,打印记录数,哈哈,我的ODBC是个简单的Access表:
db_execute_query ("testsession","SELECT * FROM Task_Table",record_number);
print("query record num= " record_number);
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2005-10-28 11:09:21 | 只看该作者
我也收藏啦,谢谢
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-5-19 15:08 , Processed in 0.081949 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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