1. 下載 MySQL LoadRunner libraries。mysql
下載地址:http://files.cnblogs.com/files/xiaoxitest/MySQL_LoadRunner_libraries.zipsql
2. 能夠看到 MySQL LoadRunner libraries 裏面有兩個文件夾:bin 以及 include。數據庫
將 bin 文件夾裏的文件拷貝到 LoadRunner 安裝路徑下的 bin 文件夾下。數組
將 include 文件夾裏的文件所有拷貝到 LoadRunner 安裝路徑下的 include 文件夾下。函數
LoadRunner安裝路徑通常都是 C:\Program Files (x86)\HP\LoadRunner 或者 C:\Program Files \HP\LoadRunner測試
新建test數據庫spa
在test數據庫下新建表格 people:包含以下3個字段。code
id須要勾選自動遞增。blog
//引入mysql lib的h文件 #include "Ptt_Mysql.h" MYSQL *Mconn; vuser_init() { #define MYSQLSERVER "xx.xx.xx.xx"//mysql的ip #define MYSQLUSERNAME "root"//用戶名 #define MYSQLPASSWORD "xxxxxx"//密碼 #define MYSQLDB "test"//數據庫 #define MYSQLPORT "3306"//端口 //引入libmysql的dll lr_load_dll("libmysql.dll"); //鏈接mysql Mconn = lr_mysql_connect(MYSQLSERVER, MYSQLUSERNAME, MYSQLPASSWORD, MYSQLDB, atoi(MYSQLPORT)); return 0; }
Ptt_MySql.h 這個文件是剛剛拷貝到LoadRunner的include文件夾裏面的文件之一。ip
能夠打開看到 Ptt_MySql.h 這個文件主要包含3個函數:lr_mysql_connect 、lr_mysql_query、lr_mysql_disconnect。這都是咱們後邊要用到的,因此拿出來放到 vuser_init() 初始化函數以前 。
而後就是定義鏈接數據庫所須要的東西:IP、用戶名、密碼等。經過下面的 lr_mysql_connect()函數來鏈接數據庫。
鏈接數據庫前,須要加載 libmysql.dll 文件。
Action() { char chQuery[128]; int result; //把字符存到chQuery[]中 sprintf(chQuery, "INSERT INTO people (username,password) VALUES('user11','111111')"); //執行sql result = lr_mysql_query(Mconn, chQuery); if(result == 0){ lr_output_message("insert 成功"); } else{ lr_error_message("insert 失敗"); } return 0; }
這裏進行的是插入操做。
數據庫常見的增刪改查,這裏只須要把 sprintf裏面的字符串替換掉就能夠。
vuser_end() { //關閉數據庫鏈接 lr_mysql_disconnect(Mconn); return 0; }
這裏就是關閉數據庫鏈接。
這裏添加了一些文件是否存在的驗證,以及屢次鏈接Mysql 的嘗試。
#include "Ptt_Mysql.h" #include "mysql.h" #include "mysql_com.h" #include "mysql_time.h" #include "mysql_version.h" #include "typelib.h" #include "my_list.h" #include "my_alloc.h" #define MYSQLSERVER "localhost" #define MYSQLUSERNAME "root" #define MYSQLPASSWORD "xxxxxx" #define MYSQLDB "test" #define MYSQLPORT "3306" int statu=1; MYSQL *Mconn; int conn_fail=0, conn_iter=0; vuser_init() { // Load libmysql.dll int rc; rc = lr_load_dll("libmysql.dll"); if (rc != 0) { lr_error_message("Could not load libmysql.dll"); lr_abort(); } lr_start_transaction("mysql_connection"); //Initialise MySQL if(!(Mconn = mysql_init(NULL))) { lr_message("Error -1: Cannot initialize MySQL - %s", mysql_error(Mconn)); statu = 0; lr_end_transaction("mysql_connection", LR_FAIL); } do{ // Connect to database if (!mysql_real_connect(Mconn, MYSQLSERVER, MYSQLUSERNAME, MYSQLPASSWORD, MYSQLDB, atoi(MYSQLPORT), NULL, 0)) { conn_fail = -2; conn_iter++; sleep(100); } else conn_fail = 0; } while(conn_fail < 0 && conn_iter < 10); if (conn_fail < 0) { lr_message("Error : %s", mysql_error(Mconn)); statu = 0; lr_end_transaction("mysql_connection", LR_FAIL); return -2; } else { lr_message("MySql - Good Connection"); statu = 1; lr_end_transaction("mysql_connection", LR_PASS); } return 0; }
這裏嘗試向 people表格插入一條數據。
能夠看到這裏使用的數據是直接從 參數文件讀取的,因此須要事先創建好參數 user 以及 pwd。
Action_insert() { if(statu) { char chQuery[1024]; int status=0; lr_start_transaction("mysql_insert"); lr_output_message("The parameter user is : %s",lr_eval_string("{user}")); lr_output_message("The parameter password is : %s",lr_eval_string("{pwd}")); sprintf(chQuery, "INSERT INTO people (username,password) VALUES('%s','%s')",lr_eval_string("{user}"),lr_eval_string("{pwd}")); status = lr_mysql_query(Mconn, chQuery); if(status!=0) { lr_end_transaction("mysql_insert",LR_FAIL ); } else { lr_end_transaction("mysql_insert", LR_PASS); } } return 0; }
Action_update() { if(statu) { char chQuery[1024]; int status=0; lr_start_transaction("mysql_update"); lr_output_message("The parameter user is : %s",lr_eval_string("{user}")); lr_output_message("The parameter password is : %s",lr_eval_string("{pwd}")); sprintf(chQuery,"UPDATE people SET password = '123456789' WHERE username='%s'",lr_eval_string ("{user}")); status = lr_mysql_query(Mconn, chQuery); if(status!=0) { lr_end_transaction("mysql_update",LR_FAIL ); } else { lr_end_transaction("mysql_update", LR_PASS); } } return 0; }
查詢出來的結果保存在多維數組中,能夠使用 row[][].cell 來獲取數據。
Action_select() { if(statu) { char chQuery[1024]; int status=0; lr_start_transaction("mysql_select"); lr_output_message("The parameter user is : %s",lr_eval_string("{user}")); lr_output_message("The parameter password is : %s",lr_eval_string("{pwd}")); sprintf(chQuery,"SELECT username,password FROM people WHERE username='%s'",lr_eval_string("{user}")); status = lr_mysql_query(Mconn, chQuery); lr_save_string(row[0][0].cell,"user1"); lr_save_string(row[1][0].cell,"pw1"); lr_output_message(lr_eval_string("User:{user1}")); lr_output_message(lr_eval_string("Password:{pw1}")); if(status!=0) { lr_end_transaction("mysql_select",LR_FAIL ); } else { lr_end_transaction("mysql_select", LR_PASS); } } return 0; }
Action_delete() { if(statu) { char chQuery[1024]; int status=0; lr_start_transaction("mysql_delete"); lr_output_message("The parameter user is : %s",lr_eval_string("{user}")); lr_output_message("The parameter password is : %s",lr_eval_string("{pwd}")); sprintf(chQuery, "DELETE FROM people WHERE username='%s'",lr_eval_string("{user}")); status = lr_mysql_query(Mconn, chQuery); if(status!=0) { lr_end_transaction("mysql_delete",LR_FAIL ); } else { lr_end_transaction("mysql_delete", LR_PASS); } } return 0; }
vuser_end() { lr_mysql_disconnect(Mconn); return 0; }