一、ODBC环境配置
系统环境:
Win7 64位系统
1、安装:mysql驱动程序_mysql-connector-odbc-5.1.6-win32
2、64位系统, 那就在这个目录下C:\Windows\SysWOW64找到odbcad32.exe运行,配置mysql数据源(如果你是32位的,在C:\Windows\System32路径下)
二、ODBC协议脚本编写
1、可以进行录制:
步骤:安装SqlDbx,启动LR的VUGen,选择ODBC协议,进行录制。
缺点:录制脚本复杂且难以理解,而且回放效果不好。
2、手写代码:
步骤:1连接数据库 2执行sql语句 3关闭连接,具体代码如下:
#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中就有定义,同时还有一些其他文件 //如果手写脚本,则需要手工添加,主要是定义各种变量 <pre name="code" class="objc"> //查询行数 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, "root", lr_decrypt("559b4a806ccaaba6117ac18b9fcdc6ff3f9c67f70903"), "new_mysql", lr_decrypt( "559b4a80e"), Ctx1, 0, 0); <pre name="code" class="objc"><pre name="code" class="objc"> //执行第一条sql语句 lrd_open_cursor(&Csr1, Con1, 0); lrd_stmt(Csr1, "SELECT StartTime FROM Answer_Logs WHERE StartTime='1385439793'", -1, 1, 0 /*None*/, 0); lrd_row_count(Csr1, &count, 0); lr_message("count= %d",count); lrd_close_cursor(&Csr1, 0);
<pre name="code" class="objc"><pre name="code" class="objc"> //执行第二条sql语句 lrd_open_cursor(&Csr1, Con1, 0); lrd_stmt(Csr1, "SELECT Ip FROM Answer_Logs WHERE Ip='49.5.3.173'", -1, 1, 0 /*None*/, 0); lrd_row_count(Csr1, &count, 0); lr_message("count= %d",count); lrd_close_cursor(&Csr1, 0);
<pre name="code" class="objc"> //执行第三条sql语句 lrd_open_cursor(&Csr1, Con1, 0); lrd_stmt(Csr1, "SELECT IssueID FROM Answer_Logs WHERE IssueID='2'", -1, 1, 0 /*None*/, 0); 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; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/wuqiong_524itcast/article/details/46790363