LoadRunner11_MySQL数据库脚本
记录一次压测过程中,通过LoadRunner向MySQL数据库插入大量数据的过程。
【1】需要使用到MySQL的libmysql.dll动态链接库,因此需要安装MySQL;注:本地安装的MySQL最好和MySQL数据库服务器上的版本一致;(本次使用的是MYSQL 5.6)
【2】LoadRunner选择“CVuser”协议;
【3】选择“File”→“Add Files to script”,将MySQL Server 5.6/lib下的libmysql.dll载入;这样载入,相比在脚本中采用绝对路径,可移植性更好;
而后可以看到,左侧文件已被加入;
【4】使用libmysql.dll中的函数,完成脚本;
【5】当Insert SQL语句含有中文时,需要设置字符集为GBK,防止中文乱码:mysql_query(db_connection,lr_eval_string("SET NAMES gbk"));
完整代码:
(1)vuser_init.c文件内容
int rc;
int db_connection; //数据库连接
int query_result; // 查询结果集 MYSQL_RES
char ** result_row; // 查询的数据行
char *server = "*.*.*.*"; //压测数据库IP地址
char *user = "test"; //压测数据库登录名
char *password = "test"; //压测数据库登录密码
char *database = "TESTDB"; //压测数据库名
int port = ; //压测数据库端口号
int unix_socket = NULL;
int flags = ; vuser_init()
{ // 找到libmysql.dll的所在位置.如果安装了mysql,并将dll文件导入了脚本内,可以直接load,不需要路径
rc = lr_load_dll("libmysql.dll");
if (rc != )
{
lr_error_message("Could not load libmysql.dll");
lr_abort();
} // 创建MySQL对象
db_connection = mysql_init(NULL);
if (db_connection == NULL)
{
lr_error_message("Insufficient memory");
lr_abort();
} // 连接到MySQL数据库
rc = mysql_real_connect(db_connection, server, user, password, database, port, unix_socket, flags);
if (rc == NULL)
{
lr_error_message("%s", mysql_error(db_connection));
mysql_close(db_connection);
lr_abort();
} //若插入数据中含有中文,则需要设置字符集为GBK,防止中文乱码
mysql_query(db_connection,lr_eval_string("SET NAMES gbk")); return ;
}
(2)Ation.c文件内容
Action()
{
//参数化CUS_CODE等参数;
lr_save_string(lr_eval_string("INSERT INTO `so_customer` (`ID`, `CREATOR`, `CREATE_TIME`, `UPDATE_TIME`, `VERSION`, `SYNC_VERSION`, `REMARK`, `UDF`, `CUS_NAME`, `CUS_CODE`, `CUS_PHONE`, `CUS_FAX`, `CUS_ADDRESS`, `CUS_OWNER_ID`, `CUS_OWNER_NAME`, `CUS_OPERATION_EMPLOYEE_ID`, `CUS_OPERATION_EMPLOYEE_NAME`, `SETTLE_METHOD`, `CONTACT_PERSON`, `Z_CUS_ID`, `STATUS`, `TIME`) "
"VALUES (NULL, '性能测试Creator', '2017-05-11 19:35:58.000000', '2017-05-11 19:35:58.000000', '25', '99990000000001', NULL, NULL, "
"'{CUS_CODE}', '{CUS_CODE}',NULL, '', '', '{ID}', '{NAME}', NULL, '', NULL, '性能测试专用', "
"'50000003{cus_id}', '1', '2017-05-05 19:13:55');"),
"paramInsertQuery"); rc = mysql_query(db_connection, lr_eval_string("{paramInsertQuery}"));
if (rc!= )
{
lr_error_message("%s", mysql_error(db_connection));
mysql_close(db_connection);
lr_abort();
}
return ;
}
(3)vuser_end.c文件内容
vuser_end()
{
mysql_close(db_connection);
return ;
}
备注:
①直接向数据库插入数据库,建议“Version”字段默认给1,该字段有时是乐观锁的实现方式之一,没有值可能导致服务器报“乐观锁”错误;
附录-----留存:
libmysql.dll动态链接库提供了很多函数来对数据库进行操作,大致可以分为以下几类:
函数的具体参数和使用方法也可以参考与libmysql.dll对于的头文件mysql.h
第一部分 控制类函数
mysql_init()初始化MySQL对象
mysql_options()设置连接选项
mysql_real_connect()连接到MySQL数据库
mysql_real_escape_string()将查询串合法化
mysql_query()发出一个以空字符结束的查询串
mysql_real_query()发出一个查询串
mysql_store_result()一次性传送结果
mysql_use_result()逐行传送结果
mysql_free_result()释放结果集
mysql_change_user()改变用户
mysql_select_db()改变默认数据库
mysql_debug()送出调试信息
mysql_dump_debug_info()转储调试信息
mysql_ping()测试数据库是否处于活动状态
mysql_shutdown()请求数据库SHUTDOWN
mysql_close()关闭数据库连接
第二部分 信息获取类函数
mysql_character_set_name()获取默认字符集
mysql_get_client_info()获取客户端信息
mysql_host_info()获取主机信息
mysql_get_proto_info()获取协议信息
mysql_get_server_info()获取服务器信息
mysql_info()获取部分查询语句的附加信息
mysql_stat()获取数据库状态
mysql_list_dbs()获取数据库列表
mysql_list_tables()获取数据表列表
mysql_list_fields()获取字段列表
第三部分 行列类操作函数
mysql_field_count()获取字段数
mysql_affected_rows()获取受影响的行数
mysql_insert_id()获取AUTO_INCREMENT列的ID值
mysql_num_fields()获取结果集中的字段数
mysql_field_tell()获取当前字段位置
mysql_field_seek()定位字段
mysql_fetch_field()获取当前字段
mysql_fetch_field_direct()获取指定字段
mysql_frtch_fields()获取所有字段的数组
mysql_num_rows()获取行数
mysql_fetch_lengths()获取行长度
mysql_row_tell()获取当前行位置
mysql_row_seek()行定位
mysql_da ta_seek()行定位
mysql_fetch_row()获取当前行
第四部分 线程类操作函数
mysql_list_processes()返回所有线程列表
mysql_thread_id()获取当前线程ID
mysql_thread_safe()是否支持线程方式
mysql_kill()杀列一个线程
第五部分 出错处理类函数
mysql_errno()获取错误号
mysql_error()获取错误信息
第六部分 已过时的函数
mysql_connect()
mysql_create_db()
mysql_drop_db()
mysql_eof()
mysql_reload()
mysql_escape_string()
LoadRunner11_MySQL数据库脚本的更多相关文章
- Entity Framework Model First下改变数据库脚本的生成方式
在Entity Framework Model First下, 一个非常常见的需求是改变数据库脚本的生成方式.这个应用场景是指,当用户在Designer上单击鼠标右键,然后选择Generate Dat ...
- Linux下如何将数据库脚本文件从sh格式变为sql格式
在从事软件开发的过程中,经常会涉及到在Linux下将数据库脚本文件从sh格式变为sql格式的问题.本文以一个实际的脚本文件为例,说明格式转换的过程. 1. sh文件内容 本文中的文件名为 ...
- PowerDesigner中在生成的数据库脚本中用name列替换comment列作为字段描述的方法
1 PowerDesigner中在生成的数据库脚本中用name列替换comment列作为字段描述的方法如下, 依次打开Tools -- Execute Commands -- Run Script,运 ...
- 权限开发 spring security 3.0.7 序列1 数据库脚本
spring security 3 细粒度权限控制第一篇,关于权限的初始化测试数据库脚本. 空间脚本: drop user FrameworkTest cascade; drop tablespa ...
- ABP+AdminLTE+Bootstrap Table权限管理系统第二节--数据库脚本
第一点,上一篇文章中我们讲到codefirst中一些问题包括如图 1,codefirst在执行的数据库迁移过程中产生了很多文件,对于强迫症的我而言特别不爽,这些是可以不用生成的啊 2,在codefir ...
- ABP+AdminLTE+Bootstrap Table权限管理系统第二节--在ABP的基础做数据库脚本处理
返回总目录:ABP+AdminLTE+Bootstrap Table权限管理系统一期 第一点,上一篇文章中我们讲到codefirst中一些问题包括如图,codefirst在每次执行命令的时候会生成新的 ...
- 【C#】数据库脚本生成工具(二)
年C#研发的数据库文档生成工具,给之后的工作带来了便利.近日,又针对该工具,用WinForm开发了数据库脚本生成工具-DbExcelToSQL. 下面数据库文档生成工具效果图: 感兴趣的朋友可以看下[ ...
- mysql-备份数据库脚本
备份数据库脚本,包括单库,全库备份脚本 #!/bin/bashc_user=rootc_password=12345678c_date=`date +"%Y%m%d"`c_dir= ...
- 批量备份数据库脚本(PowerShell版)
开始 昨天备份一个数据库拿来测试,发现备份后的文件非常大.后来去检查下使用的备份脚本,原来之前的备份脚本没有压缩功能. 现把之前的备份脚本修改下,支持压缩备份,和支持仅复制备份(CopyOnly). ...
随机推荐
- 请尽可能详尽的解释AJAX的工作原理
第一步:创建ajax对象(XMLHttpRequest/ActiveXObject(Microsoft.XMLHttp)) 第二步:判断数据传输方式(GET/POST) 第三步:打开链接 open() ...
- 第九章 整合Mybatis(待续)
··········
- 如何重置Oracle服务器ILOM中root用户的密码
在ILOM中,root用户的缺省密码是changeme. 为了系统的安全性,通常情况下需要修改root密码. 如果忘了密码,可以参考以下步骤重置root密码. 用串口线连接Oracle服务器ILOM ...
- angular结合echarts创建图表
原理: 利用angularjs中的指令(directive)将echarts封装. 步骤: 1.封装函数: app.directive('line', function() { return { re ...
- MySQL5.7新特性
MySQL5.7介绍 身处 MySQL 这个圈子,能够切身地感受到大家对 MySQL 5.7 的期待和热情,似乎每个人都迫不及待的想要了解.学习和使用 MySQL 5.7.那么,我们不禁要问, MyS ...
- 虚拟机之 搭建discuz论坛
1.下载 mkdir /data/www cd !$ wget http://download.comsenz.com/DiscuzX/3.2/Discuz_X3.2_SC_GBK.zip 2.解压 ...
- mvc 实体类 自定义验证特性
mvc 实体类验证的时候 如果有多个验证特性需要在属性上层叠很多个验证特性,显得属性特别臃肿并且也不够直观,极大地影响我使用它的兴趣,所以我想自定义一个验证特性,然后将所有需要验证的情形全部放在一个特 ...
- JasperMES.cn JasperMES.com.cn 我的MES网站
好久没有更新博客园.今天写上两面的两个网址JasperMES.cn JasperMES.com.cn是想记录我在做上面两个网站时的一点心得. 老实说,现在建站的软件很多,WordPress,CMS,我 ...
- 转:创建一个javaweb项目,以及导出war包
一.使用IDEA创建一个javaweb项目 1.File->New Project选择Web Application 1 2 然后填写好路径和项目名称,点击确定. 1 2 2.先看一下刚创建好的 ...
- Linux的基本指令--目录和文件和文件属性和文件用户组
目录和文件 一 . ls:列出目录的内容,未给出目录名或是文件名时,就显示当前目录的信息. -a 列出隐藏文件,文件中以”.”开头的均为隐藏文件,如:~/.bashrc -l 列出文件的详细信息 ...