LR系列--LR脚本中动态获取数据库的值作为参数进行处理

 

使用最新版的GetData.dll,可以对执行的sql语句进行参数化处理,
该dll新增加init_hstmt()以及disConnect_hstmt()两个API,
init_hstmt()函数将传出一个long类型的hstmt变量,调用方式:
long hstmt;
init_hstmt(&hstmt);
disConnect_hstmt(hstmt);

下载地址:http://www.kernzhang.com/viewtopic.php?t=248

测试脚本如下:
vuser_init部分:

#include "web_api.h"

#include "lrw_custom_body.h"

vuser_init(){
int i=0;
lr_load_dll("GetData.dll");
i=init_db("DRIVER={SQL Server};SERVER=****;UID=***;PWD=***;DATABASE=****");
if (i!=0)

   lr_error_message("init db error");
 return -1;

 return 0;

}
//判断初始化数据库是否执行成功,不成功,则输出错误信息

Action部分:

#include "web_api.h"

action 

{

int i=0;
long ll_hstmt;
char SQLstatement[100];
char * content = (char *)malloc(1024 * sizeof(char));

char * mobile =  (char *)malloc(52 * sizeof(char));

  //malloc函数是分配一个内存块. 格式为void *malloc(size_tnum_bytes);
  
num_bytes是指分配的内存块的大小。

init_hstmt(&ll_hstmt);
strcpy(SQLstatement,lr_eval_string(" {NewParam}"));  //把sql语句参数化,参数设置属性如下图
  //lr_eval_string函数是用一个指定参数替换当前值;
    strcpy函数的功能是把lr_eval_string("{NewParam}")拷贝到SQLstatement。

execSQL(SQLstatement,ll_hstmt);
bindCol(1,content,"c",77,ll_hstmt);
bindCol(2,mobile,"c",12,ll_hstmt);
while (i!=100)
{

if(i!=100)
{
 lr_output_message("mobile=%s",mobile);
 lr_output_message("content=%s",content); 
}
}
disConnect_hstmt(ll_hstmt);
free(content);  //释放内存
free(mobile);
return 0;
}

vuser_end部分:
#include "web_api.h"

vuser_end()

{

   disConnect();

return 0;

}

备注:由于参数文件中有2条sql语句,故在运行脚本时,应设置迭代次数为2次。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值