51Testing软件测试论坛

标题: 关于winrunner的数据库DML操作 [打印本页]

作者: 魏乐    时间: 2005-9-15 20:41
标题: 关于winrunner的数据库DML操作
请教各位大虾,winrunner 是否能进行数据库的DML(insert,delete等)操作。
我试了半天,好像不行。我想在脚本运行前先在数据库插入测试数据,然后进行测试。有没有好的方法推荐。谢谢先
作者: aswoon911    时间: 2005-9-16 09:48
好像不行得,自己拿VB,或者PB做个数据库前台吧,简单的
作者: 魏乐    时间: 2005-9-25 18:12
标题: 找到了原来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");
作者: aswoon911    时间: 2005-9-28 20:35
高人啊,let me try
作者: aswoon911    时间: 2005-9-28 21:46
业已验证,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);
作者: shengyan    时间: 2005-10-28 11:09
我也收藏啦,谢谢




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