• LoadRunner利用ODBC编写MySql脚本(转)


     


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

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

        2、从“控制面板”打开“数据源ODBC”,如果没有找到(我的电脑上就没有找到)。到桌面,新建一个快捷方式,目标位置:%SystemRoot%system32odbcad32.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=0;  
    //初始  
    lrd_init(&InitInfo, DBTypeVersion);  
    //打开上下文  
    lrd_open_context(&Ctx1, LRD_DBTYPE_ODBC, 0, 0, 0);  
    //申请连接的内存  
    lrd_alloc_connection(&Con1, LRD_DBTYPE_ODBC, Ctx1, 0 /*Unused*/, 0);  
    //打开连接,注意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, 1, 0);  
    //打开游标  
    lrd_open_cursor(&Csr1, Con1, 0);      
    //Sql语句,注意1代表的意思是,立马执行  
    lrd_stmt(Csr1, "select column1 from table1 where colum1 = 1", -1, 1, 0 /*None*/, 0);  
    //统计行数到count变量中  
    lrd_row_count(Csr1, &count, 0);   
    //打印消息  
    lr_message("count= %d",count);  
    //先关闭游标  
    lrd_close_cursor(&Csr1, 0);  
    //再关闭连接  
    lrd_close_connection(&Con1, 0, 0);  
    //释放连接,和alloc相呼应,否则有内存泄露  
    lrd_free_connection(&Con1, 0 /*Unused*/, 0);  
    //再关闭上下文  
    lrd_close_context(&Ctx1, 0, 0);  
    //完毕,返回0  
    return 0;  
    } 
    #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=0;
    //初始
    lrd_init(&InitInfo, DBTypeVersion);
    //打开上下文
    lrd_open_context(&Ctx1, LRD_DBTYPE_ODBC, 0, 0, 0);
    //申请连接的内存
    lrd_alloc_connection(&Con1, LRD_DBTYPE_ODBC, Ctx1, 0 /*Unused*/, 0);
    //打开连接,注意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, 1, 0);
    //打开游标
    lrd_open_cursor(&Csr1, Con1, 0); 
    //Sql语句,注意1代表的意思是,立马执行
    lrd_stmt(Csr1, "select column1 from table1 where colum1 = 1", -1, 1, 0 /*None*/, 0);
    //统计行数到count变量中
    lrd_row_count(Csr1, &count, 0);
    //打印消息
    lr_message("count= %d",count);
    //先关闭游标
    lrd_close_cursor(&Csr1, 0);
    //再关闭连接
    lrd_close_connection(&Con1, 0, 0);
    //释放连接,和alloc相呼应,否则有内存泄露
    lrd_free_connection(&Con1, 0 /*Unused*/, 0);
    //再关闭上下文
    lrd_close_context(&Ctx1, 0, 0);
    //完毕,返回0
    return 0;
    }

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

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

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

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

  • 相关阅读:
    hdu 1695(莫比乌斯反演)
    hdu 6035(Colorful Tree)
    Splay模板(序列终结者)
    我的CSDN博客
    【洛谷P2041 分裂游戏】数学+瞎蒙
    【洛谷P1962 斐波那契数列】矩阵快速幂+数学推导
    【LOJ 109 并查集】 并查集
    【洛谷P1816 忠诚】线段树
    【洛谷1339 [USACO09OCT]】热浪Heat Wave 图论+最短路
    【洛谷1433】吃奶酪 搜索+剪枝
  • 原文地址:https://www.cnblogs.com/zhengah/p/4952991.html
Copyright © 2020-2023  润新知