解决LR无法动态从数据库取值的方法
上一篇 /
下一篇 2006-12-18 21:53:35
LR本身并不提供动态的到数据库中取获取数据,所以昨天下午性情所致,写了一个极其简单的一个动态链接库
下面是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();
获取值
long hstmt;
init_hstmt(&hstmt);
断掉数据库链接以及释放内存
disConnect_hstmt(hstmt);
LR调用:
你把dll拷贝到LRscrīpts中就成了!或者按照如下方式加载:
全局的动态链接库的调用则需要修改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();
本想将dll文件与LR案例程序作为附件放上来!因网站不支持此文件!所以如果各位有需要此文件,请到www.kernzhang.com的个人网站上下载!(注为第三版的dll)
此程序在LR8.0上调试通过,并在Sql Server\Sybase\Oracle数据库上试验通过
收藏
举报
TAG: