libraries.zip 地址:連接:https://pan.baidu.com/s/1kIZ2aBCOFSJ9l727MxgIKQ 密碼:40vqmysql
* 說明一下,由於 lr 有不少庫文件都沒有,因此須要額外的從外部下載 公共庫,並放到相應的位置。
* 推薦下載: MySQL
LoadRunner libraries.zip 這樣的一個外庫。
* 下載完後,你會發現一共 9個文件,8個 .h 文件 1個 .dll 文件
* 將 .h文件 都放在 lr安裝目錄中的 include 文件夾中, .dll 放在 bin 目錄中
*
*/
注意:花點時間把下載的 .h 文件快速的過一遍,下面我會對幾個 用到的方法解釋
lr_load_dll('dll文件名'); 加載動態庫,這個很重要,能夠防止 init 中 也能夠放在 操做 Action中。
lr_abort(); 這個能夠理解爲退出。
mysql_init(); 建立一個
mysql 對象。畢竟是調用別人家的,不拿到人家的許可怎麼弄用方法呢。
mysql_real_connection(); 數據庫鏈接,你能夠在Ptt_mysql.h 文件中查找該方法的原形,或者
百度
mysql_query(); sql 語句。
-- 若是是 查詢語句使用率額mysql_query();就要使用 mysql_use_result() 和 mysql_fetch_row();
mysql_use_result(); 返回一個 結果集 ;
mysql_fetch_row(); 遍歷結果集的每一個row.
// #include "Ptt_MySql.h" // 若是調用了這個 .h 文件,下面有些 有些方法須要更換名稱
#define MAX 100
Action()
{
char *server="127.0.0.1"; // 本地
unsigned int port = 3306; //端口號
char *username = "ndouser"; // 用戶名
char *password = "ndopassword"; // 密碼
char *db_name = "main"; //數據庫名稱
unsigned long client_flag = 0;
int db_connection; // databases connecion
int QueryData;
char **ResultRow;
// 鏈接數據庫
//一、首先先把動態庫文件導入,mysql 安裝目錄下的lib 文件中的libmysql.dll 加載進來。
int flags = lr_load_dll("libmysql.dll");
//rc = lr_load_dll("C:\\Program Files\\MySQL\\MySQL Server 5.6\\lib\\libmysql.dll"); // 我的建議直接把 dll 放到 lr安裝目錄中,這樣能減小不少麻煩的配置
// 固然你也能夠不用這條判斷語句,可是爲了代碼的安全性,加上不爲錯
if(flags !=0 )
{
// 若是 加載失敗,輸出信息,並退出當前程序。
lr_output_message("加載失敗");
lr_abort();
}
// 二、開始連接數據庫 mysql_real_connect() 這個函數來着與 mysql.h 這個頭文件中,例子前作過解釋
//a、建立mysql對象
db_connection = mysql_init(NULL);
if(db_connection == NULL)
{
lr_output_message("分配內存失敗");
lr_abort();
}
flags = mysql_real_connect(db_connection,server,username,password,db_name,port,NULL,client_flag);
if(flags == NULL)
{
lr_output_message("鏈接數據庫失敗,錯誤信息:%s",mysql_error(db_connection));
mysql_close(db_connection);
lr_abort();
}
// 對數據庫進行操做,增刪改查。
// 增長 insert
lr_save_string ("INSERT INTO students VALUES(991105,'幫主',22,'man','HuNan')","paramInsertQuery");
flags = mysql_query(db_connection, lr_eval_string("{paramInsertQuery}"));
if (flags != 0) {
lr_error_message("paramInsertQuery 語句錯誤,錯誤信息:%s", mysql_error(db_connection));
//mysql_close(db_connection);
mysql_close(db_connection);
lr_abort();
}
// 刪除 delete
lr_save_string ("delete from students where sname='幫主'","paramDeleteQuery");
flags = mysql_query(db_connection, lr_eval_string("{paramDeleteQuery}"));
if (flags != 0) {
lr_error_message("paramDeleteQuery 語句錯誤,錯誤信息:%s", mysql_error(db_connection));
//mysql_close(db_connection);
mysql_close(db_connection);
lr_abort();
}
// 改 alter/update 均可以修改,修改的類型不同,這裏就不詳細說明了。
lr_save_string ("update students set sname='花農' where sname = '幫主'","paramUpdateQuery");
flags = mysql_query(db_connection, lr_eval_string("{paramUpdateQuery}"));
if (flags != 0) {
lr_error_message("paramUpdateQuery 語句錯誤,錯誤信息:%s", mysql_error(db_connection));
//mysql_close(db_connection);
mysql_close(db_connection);
lr_abort();
}
// 查 select
lr_save_string ("select * from students limit 1","paramSelectQuery");
flags = mysql_query(db_connection, lr_eval_string("{paramSelectQuery}"));
if (flags != 0) {
lr_error_message("paramSelectQuery 語句錯誤,錯誤信息:%s", mysql_error(db_connection));
//mysql_close(db_connection);
mysql_close(db_connection);
lr_abort();
}
QueryData = mysql_use_result(db_connection);
if (QueryData == NULL) {
lr_error_message("%s", mysql_error(db_connection));
mysql_free_result(QueryData);
mysql_close(db_connection);
lr_abort();
}
// 若是結果集包含多行數據,須要屢次調用 mysql_fetch_row 直到返回NULL
ResultRow = (char **)mysql_fetch_row(QueryData);
if (ResultRow == NULL) {
lr_error_message("Did not expect the result set to be empty");
mysql_free_result(QueryData);
mysql_close(db_connection);
lr_abort();
}
//lr_output_message("%d",mysql_num_rows(ResultRow));
// 保存參數,用於刪除這行數據
lr_save_string(ResultRow[0], "paramID");
lr_output_message("Order ID is: %s", lr_eval_string("{paramID}"));
mysql_free_result(QueryData);
//for(flags=0; ;flags++)
//{ }
mysql_close(db_connection);
}