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表示查询成功了

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

最新文章

  1. C#解析json文件的方法
  2. Trumbowyg - 轻量的 WYSIWYG 编辑器
  3. 09.VMWare虚拟机copy后网卡不是eth0解决办法
  4. VS2010命令行编译C#和VC项目
  5. Git工作常用
  6. Android “NetworkOnMainThreadException”出错原因及解决办法
  7. Your branch and 'origin/master' have diverged
  8. ASP.NET MVC 入门2、项目的目录结构与核心的DLL
  9. OpenXML: Asp.net利用OpenXML 导出Excel.
  10. 1207.1——C语言 函数
  11. js 事件小结
  12. 【Ecstore2.0】第三方信任登陆问题解决_备忘
  13. Windows Azure 社区新闻综述(#70 版)
  14. 基于ELK的数据分析实践——满满的干货送给你
  15. iOS语音通话(语音对讲)
  16. 经典Hash函数的实现
  17. 【译】最大限度地降低多线程 C# 代码的复杂性
  18. jsp:forward动作功能
  19. IDEA项目搭建十四——Web站点Controller基类及布局页静态资源设计
  20. python+django+uwsgi 搭建环境

热门文章

  1. python开发_python代码风格(coding style)
  2. HDU 5292 Pocket Cube 结论题
  3. JAVA容器-浅谈HashMap的实现原理
  4. 解决Could not open input file: think问题
  5. Spring MVC - Hello World示例
  6. FIS3配置fis-conf.js
  7. UIBezierPath的使用(持续更新)
  8. iOS:UIApplication和它对象的代理
  9. 数学图形(2.23)Cylindric sine wave柱面正弦曲线
  10. 第一章 consul简介