loadrunner通過使用libmysql.dll完成mysql的測試

來源:互聯網
上載者:User

標籤:==   kill   tle   ddr   主機資訊   中文   str   資料庫連接   memory   

【1】需要使用到MySQL的libmysql.dll動態連結程式庫,因此需要安裝MySQL;註:本地安裝的MySQL最好和MySQL資料庫伺服器上的版本一致;(本次使用的是MYSQL 5.6)

【2】LoadRunner選擇“CVuser”協議;

 

【3】選擇“File”→“Add Files to script”,將MySQL Server 5.6/lib下的libmysql.dll載入;這樣載入,相比在指令碼中採用絕對路徑,可移植性更好;

 

而後可以看到,左側檔案已被加入;

 

【4】使用libmysql.dll中的函數,完成指令碼;

【5】當Insert SQL語句含有中文時,需要設定字元集為GBK,防止中文亂碼:mysql_query(db_connection,lr_eval_string("SET NAMES gbk"));

完整代碼:

(1)vuser_init.c檔案內容

int  rc; int  db_connection; //資料庫連接int  query_result; // 查詢結果集 MYSQL_RESchar ** result_row; // 查詢的資料行char *server = "*.*.*.*";   //壓測資料庫IP地址char *user = "test";        //壓測資料庫登入名稱char *password = "test";    //壓測資料庫登入密碼char *database = "TESTDB";  //壓測資料庫名int  port = 8066;           //壓測資料庫連接埠號碼int  unix_socket = NULL; int  flags = 1; vuser_init(){    // 找到libmysql.dll的所在位置.如果安裝了mysql,並將dll檔案匯入了指令碼內,可以直接load,不需要路徑    rc = lr_load_dll("libmysql.dll");    if (rc != 0)     {        lr_error_message("Could not load libmysql.dll");        lr_abort();    }    // 建立MySQL對象    db_connection = mysql_init(NULL);    if (db_connection == NULL)     {        lr_error_message("Insufficient memory");        lr_abort();    }    // 串連到MySQL資料庫    rc = mysql_real_connect(db_connection, server, user, password, database, port, unix_socket, flags);    if (rc == NULL)     {        lr_error_message("%s", mysql_error(db_connection));        mysql_close(db_connection);        lr_abort();    }    //若插入資料中含有中文,則需要設定字元集為GBK,防止中文亂碼     mysql_query(db_connection,lr_eval_string("SET NAMES gbk"));    return 0;}

(2)Ation.c檔案內容

Action()

{

  //參數化CUS_CODE等參數;

     lr_save_string(lr_eval_string("INSERT INTO `so_customer`  (`ID`, `CREATOR`, `CREATE_TIME`, `UPDATE_TIME`, `VERSION`, `SYNC_VERSION`, `REMARK`, `UDF`, `CUS_NAME`, `CUS_CODE`, `CUS_PHONE`, `CUS_FAX`, `CUS_ADDRESS`, `CUS_OWNER_ID`, `CUS_OWNER_NAME`, `CUS_OPERATION_EMPLOYEE_ID`, `CUS_OPERATION_EMPLOYEE_NAME`, `SETTLE_METHOD`, `CONTACT_PERSON`, `Z_CUS_ID`, `STATUS`, `TIME`) "

                                   "VALUES (NULL, ‘效能測試Creator‘, ‘2017-05-11 19:35:58.000000‘, ‘2017-05-11 19:35:58.000000‘, ‘25‘, ‘99990000000001‘, NULL, NULL, "

                                   "‘{CUS_CODE}‘, ‘{CUS_CODE}‘,NULL, ‘‘, ‘‘, ‘{ID}‘, ‘{NAME}‘, NULL, ‘‘, NULL, ‘效能測試專用‘, "

                                   "‘50000003{cus_id}‘, ‘1‘, ‘2017-05-05 19:13:55‘);"), 

                   "paramInsertQuery");  

 

    rc = mysql_query(db_connection, lr_eval_string("{paramInsertQuery}")); 

    if (rc!= 0) 

    { 

        lr_error_message("%s", mysql_error(db_connection)); 

        mysql_close(db_connection); 

        lr_abort(); 

    } 

    return 0;

}

(3)vuser_end.c檔案內容

vuser_end(){    mysql_close(db_connection);     return 0;}

備忘:

  ①直接向資料庫插入資料庫,建議“Version”欄位預設給1,該欄位有時是樂觀鎖的實現方式之一,沒有值可能導致伺服器報“樂觀鎖”錯誤;

附錄-----留存:

  libmysql.dll動態連結程式庫提供了很多函數來對資料庫進行操作,大致可以分為以下幾類:

  函數的具體參數和使用方法也可以參考與libmysql.dll對於的標頭檔mysql.h

第一部分 控制類函數

mysql_init()初始化MySQL對象

mysql_options()設定串連選項

mysql_real_connect()串連到MySQL資料庫

mysql_real_escape_string()將查詢串合法化

mysql_query()發出一個以Null 字元結束的查詢串

mysql_real_query()發出一個查詢串

mysql_store_result()一次性傳送結果

mysql_use_result()逐行傳送結果

mysql_free_result()釋放結果集

mysql_change_user()改變使用者

mysql_select_db()改變預設資料庫

mysql_debug()送出調試資訊

mysql_dump_debug_info()轉儲調試資訊

mysql_ping()測試資料庫是否處於活動狀態

mysql_shutdown()請求資料庫SHUTDOWN

mysql_close()關閉資料庫連接

第二部分 資訊擷取類函數

mysql_character_set_name()擷取預設字元集

mysql_get_client_info()擷取用戶端資訊

mysql_host_info()擷取主機資訊

mysql_get_proto_info()擷取協議資訊

mysql_get_server_info()擷取伺服器資訊

mysql_info()擷取部分查詢語句的附加資訊

mysql_stat()擷取資料庫狀態

mysql_list_dbs()擷取資料庫列表

mysql_list_tables()擷取資料表列表

mysql_list_fields()擷取欄位列表

第三部分 行列類操作函數

mysql_field_count()擷取欄位數

mysql_affected_rows()擷取受影響的行數

mysql_insert_id()擷取AUTO_INCREMENT列的ID值

mysql_num_fields()擷取結果集中的欄位數

mysql_field_tell()擷取當前欄位位置

mysql_field_seek()定位欄位

mysql_fetch_field()擷取當前欄位

mysql_fetch_field_direct()擷取指定欄位

mysql_frtch_fields()擷取所有欄位的數組

mysql_num_rows()擷取行數

mysql_fetch_lengths()擷取行長度

mysql_row_tell()擷取當前行位置

mysql_row_seek()行定位

mysql_da ta_seek()行定位

mysql_fetch_row()擷取當前行

第四部分 線程類操作函數

mysql_list_processes()返回所有線程列表

mysql_thread_id()擷取當前線程ID

mysql_thread_safe()是否支援線程方式

mysql_kill()殺列一個線程

第五部分 出錯處理類函數

mysql_errno()擷取錯誤號碼

mysql_error()擷取錯誤資訊

第六部分 已淘汰的函數

mysql_connect()

mysql_create_db()

mysql_drop_db()

mysql_eof()

mysql_reload()

mysql_escape_string()

 

loadrunner通過使用libmysql.dll完成mysql的測試

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.