码迷,mamicode.com
首页 > 数据库 > 详细

LoadRunner11之批量插入SQL数据~2

时间:2020-02-17 15:39:22      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:creat   col   from   pass   sql查询语句   init   ring   arc   double   

LoadRunner11之批量插入SQL数据

1.背景:数据库需要大量数据时,通过前台界面录入数据,是一个很麻烦的事情,这个时候可以借助工具来对数据库进行批量插入。

2.协议选择:我们选择的是LoadRunner11+webservice协议。

3.分析工作:(1)在录制之前,需要分析插入数据表字段的特性,是唯一还是随机,是否需要拼接等等

                   (2)表和表之间的关系,主外键以及关联的字段等

                     目的:为了更好的参数化数据,便于造的数据更加接近真实数据。

目前有2个表,student和stuclass

create table student
(

stu_id char(10) primary key (stu_id),
stu_name varchar(30) not null,
stu_specialty varchar(30) not null,
stu_sex char(2) check( stu_sex in (‘男‘,‘女‘))
)

create table stuclass
(
stu_classid varchar(30) not null,
stu_id char(10) not null primary key (stu_id),
stu_classname varchar(30) not null,
)

其中stu_id是唯一,stu_name使用拼接方式:test+唯一,stu_specitalty:可重复,stu_sex:随意选择

stuclass:stu_id,唯一并且和student表使用同一个参数,stu_classid+stu_classname 定义参数,班级编码对应班级名次,使用same as line XXX

4.代码部分:Action-数据库链接

//链接1 ConnectionType=OLEDB

lr_db_connect("StepName=Connect",
"ConnectionString=Provider=SQLOLEDB;Data Source=localhost,1433;Initial Catalog=test_lr;User Id=sa;Password=sql2008",
"ConnectionName=MyCon",
"ConnectionType=OLEDB", //ConnectionType=SQL时,ConnectionString不可以带有Provider;ConnectionType=OLEDB时,必须带Provider
LAST);

注:链接数据库方式是OLEDB,Data Source=‘数据源,端口‘,initial Catalog=‘数据库名称‘,User Id:用户名,Password:密码

//链接2 ConnectionType=SQL时

lr_db_connect("StepName=DatabaseConnection",
"ConnectionString=Data Source=192.168.1.251;Initial Catalog=MY_test;Persist Security Info=True;User ID=sa;Password=test1",
"ConnectionName=MeCon",
"ConnectionType=SQL",
LAST ); //ConnectionType=SQL时,ConnectionString不可以带有Provider;

lr_output_message("数据库链接成功");

 

5.批量插入语句部分

lr_start_transaction("insert_student");

//插入student表

lr_db_executeSQLStatement("StepName=Insert_test",

"ConnectionName=MyCon",
"SQLStatement=insert into student values (‘{stu_id}‘,‘test_{stu_name}‘,‘{stu_specialty}‘,‘{sex}‘)",
"DatasetName=Insert_DataSet",
LAST );

lr_end_transaction("insert_student", LR_AUTO);

 

//插入class表

lr_start_transaction("insert_class");
lr_db_executeSQLStatement("StepName=Insert_test",
"ConnectionName=MyCon",
"SQLStatement=insert into stuclass values (‘{classid}‘,‘{stu_id}‘,‘{classname}‘)",
"DatasetName=Insert_DataSet",
LAST );

lr_end_transaction("insert_class", LR_AUTO);

//断开数据库链接


lr_db_disconnect("stepname=Disconnect","connectionname=MyCon",LAST);

6.参数化成功后,运行,确认数据是否插入成功。

7.如要要插入万+条记录,按F4设置迭代次数,运行即可。(或者通过controller设置用户数进行执行)

技术图片

 

批量数据插入成功-end

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

-- 以下内容是查询部分

 

double time;

lr_start_transaction("SQL查询");
NumRows = lr_db_executeSQLStatement("StepName=PerformQuery",
"ConnectionName=MyCon",
// 数据库语句
"SQLStatement=SELECT * FROM ",
"DatasetName=MyDataSet",
LAST );
times=lr_get_transaction_duration("SQL查询"); //查询需要的时间

lr_end_transaction("SQL查询", LR_AUTO);

lr_output_message("The query returned %d rows.", NumRows);

lr_output_message("SQL查询语句执行时间 %f ", times);

/

//打印查询结果
lr_db_dataset_action("StepName=PrintDataset", //随意指定的动作名称
"DatasetName=MyDataSet",
"Action=PRINT", //?RESET: 将光标设置为数据集的第一条记录
//?REMOVE: 释放分配给数据集的内存。
//?PRINT: 将整个数据集的内容打印到重播日志和其他测试报告摘要中。
LAST );


while (i<=10) { //输出前10条记录的“stu_id”列值
lr_db_getvalue("StepName=GetValue", //随意指定的动作名称
"DatasetName=MyDataSet",
"Column=stu_id", //数据表列名
"Row=next", //可选参数:?具体的第几行;?current(表示不移动光标,即当前行);?next(设置光标到下一行)
"OutParam=Value_Param", //查询值的参数名
LAST);
lr_output_message("The value %d is: %s", i, lr_eval_string("{Value_Param}") );
i=i+1;
}

//注lr_db_gevalue函数的使用

//释放结果
lr_db_dataset_action("StepName=RemoveDataset",
"DatasetName=MyDataSet",
"Action=REMOVE",
LAST);

 

查询结果以及输入结果为:

技术图片

 

 技术图片

 

 

其他:数据库链接常用的几个函数,具体使用方法可以在lr函数库中查询

技术图片

 之前使用了LR12,在数据库查询或者插入时总是存在问题,提示外部组件发生异常“”,导致无法操作成功,通过多次排斥,原因出在插入语句或者是查询语句上。百度找过很多解决方法,最终还是放弃,重新安装LR11,同样的代码,执行成功。

技术图片

 

 

 

 

LoadRunner11之批量插入SQL数据~2

标签:creat   col   from   pass   sql查询语句   init   ring   arc   double   

原文地址:https://www.cnblogs.com/fgjl/p/12321796.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!