標籤:使用lr的odbc協議進行mysql資料
一、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; }
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
使用LR的ODBC協議進行mysql資料庫測試