哈库拉玛塔塔——tjitty

记录下网络上的精品测试技术文章 and 生活

统计

留言簿(8)

积分与排名

阅读排行榜

评论排行榜

LR动态链接数据库

LR本身并不提供动态的到数据库中取获取数据,一个极其简单的一个动态链接库,这只是个范例,希望大家以后会不断地完善它,而且此动态链接库只提供去一条记录!呵呵!以后有兴趣的话我会完善一下它!此动态链接库在SQL Server测试成功!
下面是dll提供的API介绍!
int init_db(char* connectString);
input:
connectString--为SQL链接串
output:0---代表成功,非0--代表失败
int execSQL(char* sql);
input:sql--你需要执行的sql语句
output:0---代表成功,非0--代表失败
int bindCol(int col,char* colname,char col_type,int length)
input:
col--表示SQL中的列号
colname--表示你需要获取SQL的值
col_tyoe:有两种c--代表字符型i---代表int
length---代表着你去的值长度是多少
int fetchData();
获取值
void disConnect();
断掉数据库链接以及释放内存

LR调用:
你把dll拷贝到LRscripts中就成了!或者按照如下方式加载:
全局的动态链接库的调用则需要修改mdrv.dat,路径在LoadRunner的安装目录下面(LoadRunner/dat directory);在里面修改如例:
[WinSock]
ExtPriorityType="protocol"
WINNT_EXT_LIBS="wsrun32.dll"
WIN95_EXT_LIBS="wsrun32.dll"
LINUX_EXT_LIBS="liblrs.so"
SOLARIS_EXT_LIBS="liblrs.so"
HPUX_EXT_LIBS="liblrs.sl"
AIX_EXT_LIBS="liblrs.so"
LibCfgFunc="winsock_exten_conf"
UtilityExt="lrun_api"
ExtMessageQueue="0"
ExtCmdLineOverwrite="-WinInet" No
ExtCmdLineConc="-UsingWinInet" No
WINNT_DLLS="user_dll1.dll," user_dll2.dll, ...
//最后一行是加载你需要的DLL

 

LR脚本示例:
char msgid[80],sp[20];
lr_load_dll("GetData.dll");
i=init_db("DRIVER={SQL Server};SERVER=*****;UID=******;PWD=*****;DATABASE=******");
lr_output_message("i=%d",i);
i+=execSQL("select top 1 org_msgid,sp_number from msg");
lr_output_message("i=%d",i);
i+=bindCol(1,msgid,"c",77);
i+=bindCol(2,sp,"c",6);
lr_output_message("i=%d",i);
i+=fetchData();
lr_output_message("i=%d",i);
lr_output_message("i=%s",msgid);
lr_output_message("i=%s",sp);
disConnect();


在判断结束100为记录的结束的标识符,在调用DLL之初、结束以及出错时自动将日志输出到当前目录的dll.log中去!
程序参考:
int i=0;
int j;
char msgid[80],sp[20];
lr_load_dll("GetData.dll");
i=init_db("DRIVER={SQL Server};SERVER=*****;UID=**;PWD=***;DATABASE=*****");
lr_output_message("i=%d",i);
i+=execSQL("select top 10 org_msgid,sp_number from msg");
lr_output_message("i=%d",i);
i+=bindCol(1,msgid,"c",77);
i+=bindCol(2,sp,"c",6);
lr_output_message("i=%d",i);
while (i!=100)
{
i=fetchData();
lr_output_message("i=%d",i);
lr_output_message("i=%s",msgid);
lr_output_message("i=%s",sp);
}
disConnect();

新增加init_hstmt()以及disConnect_hstmt()两个API
init_hstmt()函数将传出一个long类型的hstmt变量,调用方式:

long hstmt;
init_hstmt(&hstmt);

disConnect_hstmt(hstmt);

--------------------------------------------------------------------------------

GetData.dll
 描述: 获取数据库中的值
 
 文件大小:  208.05 KB

posted on 2007-03-26 17:14 tjitty 阅读(1375) 评论(9)  编辑 收藏 引用 所属分类: LoadRunner

评论

# re: LR动态链接数据库 2007-03-26 17:16 tjitty

我该怎么添加附件呢?
好东西大家分享,
感谢原作!  回复  更多评论   

# re: LR动态链接数据库 2007-03-27 14:06 tjitty

@tjitty
http://www.cnitblog.com/Files/tjitty/getdata_807.rar  回复  更多评论   

# re: LR动态链接数据库 2007-08-06 11:27 hujy

请问,以上的方法是否可以解决动态的得到一个数据库中的字段值。
即:每次运行LR时,有一值“A”可以动态的向数据库中取值。当然这个A的取值是有一个SQL语句获得。
等待,谢!  回复  更多评论   

# re: LR动态链接数据库[未登录] 2007-08-06 11:33 tjitty

@hujy
肯定是可以的,这篇文章就是解决这个的。
我没有实际操作过,只是放在这里备用,你可以自己实践下。
好久没有搞LR了,^_^。  回复  更多评论   

# re: LR动态链接数据库 2007-08-07 10:52 hujy

的确可以解决问题,链接sql2000数据库可以,

不过链接sql2005数据库不可以。  回复  更多评论   

# re: LR动态链接数据库 2007-11-15 15:47 小波

@hujy
我的怎么不行啊?
我可以链接成功,但是执行sql语句怎么不行呢?  回复  更多评论   

# re: LR动态链接数据库 2008-05-28 14:05 4234

748327984  回复  更多评论   

# re: LR动态链接数据库 2008-08-04 14:48 sophie

有没办法可以链接sql2005数据库?@hujy
  回复  更多评论   

# re: LR动态链接数据库 2009-02-21 21:09 pp

多谢  回复  更多评论   

只有注册用户登录后才能发表评论。