LoadRunner测试数据库是模拟客户端去连接数据库服务器,因此,需要协议(或者说驱动的支持)。LoadRunner本身直接支持Oracle、SqlServer数据库,这两个数据库直接选择相应的协议就可以录制脚本。而MySql数据库只能利用ODBC协议来录制(编写)脚本,所以必须要MySql的ODBC驱动,和支持ODBC的查询分析器(录脚本需要,自己编写就不需要)。

1、首先要安装MySql的ODBC驱动,MyODBC 3.51.11 WIN。

2、从“控制面板”打开“数据源ODBC”,如果没有找到(我的电脑上就没有找到)。到桌面,新建一个快捷方式,目标位置:%SystemRoot%\system32\odbcad32.exe。

3、打开ODBC管理程序,添加的驱动为“MySQL ODBC 3.51 Driver”,然后填写一些ip、用户名、密码之类的,测试一下就可以了。(这一步其实是非必须的,如果写连接串,就不需要,如果要用DNS数据库名,就需要)

4、安装一个查询分析器,这个查询分析器必须是支持ODBC 的(这是必须的,否则录不上),这很不好找。我找了一个,还不好用,叫“通用数据库查询分析器”。http://www.onlinedown.net/soft/31366.htm

5、启动LoadRunner,Create Scripts;Application type选择Win32
Applications;Program
record选择第4步的查询分析器位置,记得查询分析器选择“ODBC”,才能录得上;录完了,运行一下是否正常。

6、Run Load Tests的时候,如果失败,看看License是否支持,用global-100的License就可以了。

录制的脚本是惨不忍睹(又臭又长),所以,我试着手工编写了一个简单的,每行都有注释,如果要高级的,请参考LoadRunner的帮助文档。

view plaincopy to clipboardprint?

#include "lrd.h"
Action()
{
static LRD_INIT_INFO InitInfo = {LRD_INIT_INFO_EYECAT};
static LRD_DEFAULT_DB_VERSION DBTypeVersion[] =
{
{LRD_DBTYPE_ODBC, LRD_DBVERSION_ODBC_30},
{LRD_DBTYPE_NONE, LRD_DBVERSION_NONE}
};
static LRD_CONTEXT FAR * Ctx1;
static LRD_CONNECTION FAR * Con1;
static LRD_CURSOR FAR * Csr1;
//上面的定义的代码如果录制脚本,在vdf.h中就有定义,同时还有一些其他文件
//如果手写脚本,则需要手工添加,主要是定义各种变量
//查询行数
unsigned long count=;
//初始
lrd_init(&InitInfo, DBTypeVersion);
//打开上下文
lrd_open_context(&Ctx1, LRD_DBTYPE_ODBC, , , );
//申请连接的内存
lrd_alloc_connection(&Con1, LRD_DBTYPE_ODBC, Ctx1, /*Unused*/, );
//打开连接,注意DRIVER就是上面安装的
lrd_open_connection(&Con1, LRD_DBTYPE_ODBC, "", "","", "DRIVER=MySQL ODBC 3.51 Driver;UID=root;PWD=123456;SERVER=192.168.1.99;DATABASE=TestDB", Ctx1, , );
//打开游标
lrd_open_cursor(&Csr1, Con1, );
//Sql语句,注意1代表的意思是,立马执行
lrd_stmt(Csr1, "select column1 from table1 where colum1 = 1", -, , /*None*/, );
//统计行数到count变量中
lrd_row_count(Csr1, &count, );
//打印消息
lr_message("count= %d",count);
//先关闭游标
lrd_close_cursor(&Csr1, );
//再关闭连接
lrd_close_connection(&Con1, , );
//释放连接,和alloc相呼应,否则有内存泄露
lrd_free_connection(&Con1, /*Unused*/, );
//再关闭上下文
lrd_close_context(&Ctx1, , );
//完毕,返回0
return ;
}
#include "lrd.h"
Action()
{
static LRD_INIT_INFO InitInfo = {LRD_INIT_INFO_EYECAT};
static LRD_DEFAULT_DB_VERSION DBTypeVersion[] =
{
{LRD_DBTYPE_ODBC, LRD_DBVERSION_ODBC_30},
{LRD_DBTYPE_NONE, LRD_DBVERSION_NONE}
};
static LRD_CONTEXT FAR * Ctx1;
static LRD_CONNECTION FAR * Con1;
static LRD_CURSOR FAR * Csr1;
//上面的定义的代码如果录制脚本,在vdf.h中就有定义,同时还有一些其他文件
//如果手写脚本,则需要手工添加,主要是定义各种变量
//查询行数
unsigned long count=;
//初始
lrd_init(&InitInfo, DBTypeVersion);
//打开上下文
lrd_open_context(&Ctx1, LRD_DBTYPE_ODBC, , , );
//申请连接的内存
lrd_alloc_connection(&Con1, LRD_DBTYPE_ODBC, Ctx1, /*Unused*/, );
//打开连接,注意DRIVER就是上面安装的
lrd_open_connection(&Con1, LRD_DBTYPE_ODBC, "", "","", "DRIVER=MySQL ODBC 3.51 Driver;UID=root;PWD=123456;SERVER=192.168.1.99;DATABASE=TestDB", Ctx1, , );
//打开游标
lrd_open_cursor(&Csr1, Con1, );
//Sql语句,注意1代表的意思是,立马执行
lrd_stmt(Csr1, "select column1 from table1 where colum1 = 1", -, , /*None*/, );
//统计行数到count变量中
lrd_row_count(Csr1, &count, );
//打印消息
lr_message("count= %d",count);
//先关闭游标
lrd_close_cursor(&Csr1, );
//再关闭连接
lrd_close_connection(&Con1, , );
//释放连接,和alloc相呼应,否则有内存泄露
lrd_free_connection(&Con1, /*Unused*/, );
//再关闭上下文
lrd_close_context(&Ctx1, , );
//完毕,返回0
return ;
}

写完了,自己运行一下可以查看日志如下:

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

Starting iteration 1.
Starting action Action.
Action.c(8): lrd_open_connection: User="", Server=""
Action.c(11): lrd_stmt: select column1 from table1 where colum1 = 1;
count= 1
Action.c(16): lrd_close_connection: User="", Server=""
Ending action Action.

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

count = 1表示查询成功了

==========================================================================

LoadRunner利用ODBC编写MySql脚本(转)的更多相关文章

  1. LoadRunner利用ODBC编写MySql脚本

    最近做了几周的LoadRunner测试,有一些心得,记录下来,以便以后查找. LoadRunner测试数据库是模拟客户端去连接数据库服务器,因此,需要协议(或者说驱动的支持).LoadRunner本身 ...

  2. loadrunner通过odbc测mysql数据库语句

    #include "lrd.h" Action() { double trans_time;  //定义一个double型变量用来保存事务执行时间 static LRD_INIT_ ...

  3. loadrunner 利用JDBC操作mysql数据库

    import lrapi.lr;import java.util.ArrayList;import java.util.List; import java.sql.Connection; import ...

  4. MFC通过ODBC连接mysql(使用VS2012编写MFC)

    原创文章,转载请注明原文:MFC通过ODBC连接mysql(使用VS2012编写MFC) By Lucio.Yang 1.ODBC连接mysql 首先ODBC是什么呢? 开放数据库互连(Open Da ...

  5. 利用java编写的盲注脚本

    之前在网上见到一个盲注的题目,正好闲来无事,便用java写了个盲注脚本,并记录下过程中的坑 题目源码: <?php header("Content-Type: text/html;ch ...

  6. Loadrunner与idea编写加密的java Vusers脚本总结

    Loadrunner与idea编写加密的java Vusers脚本总结 准备工作:   jdk版本的选择:       Loadrunner11 使用版本jdk1.6 32位(如果使用1.7的Load ...

  7. Loadrunner 脚本开发-利用loadrunner开发Windows Sockets协议脚本

    脚本开发-利用loadrunner开发Windows Sockets协议脚本 by:授客 QQ:1033553122 欢迎加入软件性能测试交流QQ群:7156436 实践举例 Socket服务端简单实 ...

  8. Loadrunner 脚本开发-利用Loadrunner生成Web service测试脚本

    脚本开发-利用Loadrunner生成Web service测试脚本 1.选择协议--Web Service,如下图 2.导入服务 入口1:点击Manage Services ->弹出窗中选择“ ...

  9. CentOS下编写shell脚本来监控MySQL主从复制的教程

    这篇文章主要介绍了在CentOS系统下编写shell脚本来监控主从复制的教程,文中举了两个发现故障后再次执行复制命令的例子,需要的朋友可以参考下 目的:定时监控MySQL主从数据库是否同步,如果不同步 ...

随机推荐

  1. [转] 关于Struts-JSON配置(详解带实例struts2的json数据支持)

    关于Struts-JSON的提高开发效率 一.JSON是什么? :JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写,同时也易于机器解 析和 ...

  2. Codeforces Round #299 (Div. 2) B. Tavas and SaDDas 水题

    B. Tavas and SaDDas Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/535/p ...

  3. input输入框限制输入英文,数字,汉字

    <h1>js验证输入框内容</h1><br /><br /> 只能输入英文<input type="text" onkeyup ...

  4. C++虚函数、虚继承

    http://blog.csdn.net/hackbuteer1/article/details/7883531 转载请标明出处,原文地址:http://blog.csdn.net/hackbutee ...

  5. Android SDK最小需求

    As a minimum when setting up the Android SDK, you should download the latest tools and Android platf ...

  6. this与JavaScrip中的四种调用模式

    this是什么 方法调用模式 构造器调用模式 函数调用模式 apply/call模式 this是什么 —In most languages, ‘this’ is a reference to the ...

  7. Flink及主流流框架spark,storm比较

    干货 | Flink及主流流框架比较 IT刊 百家号17-05-2220:16 引言 随着大数据时代的来临,大数据产品层出不穷.我们最近也对一款业内非常火的大数据产品 - Apache Flink做了 ...

  8. ICLR 2014 International Conference on Learning Representations深度学习论文papers

    ICLR 2014 International Conference on Learning Representations Apr 14 - 16, 2014, Banff, Canada Work ...

  9. java.lang.Integer can not be cast to java.lang.Long

    hibernate 查询出来的结果 id 是int类型,xml文件配置的是int, 在jython 中调用hibernate 进行查询.字段的类型是java.lang.Long, 直接将id 传进去, ...

  10. VMware ESXi 5.5无法与Windows 2012 NTP Server同步时间

    这次笔者需要面对的环境对时间的同步有比较高的要求, 而虚拟化的环境中时间是比较容易出问题的, 您可以参考上一篇博文为什么Domain controller上的time synchronization非 ...