日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

loadrunner通过使用libmysql.dll完成mysql的测试

發(fā)布時(shí)間:2024/9/21 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 loadrunner通过使用libmysql.dll完成mysql的测试 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1】需要使用到MySQLlibmysql.dll動(dòng)態(tài)鏈接庫(kù),因此需要安裝MySQL;注:本地安裝的MySQL最好和MySQL數(shù)據(jù)庫(kù)服務(wù)器上的版本一致;(本次使用的是MYSQL 5.6

2LoadRunner選擇“CVuser”協(xié)議;

?

3】選擇“File”→“Add Files to script”,MySQL Server 5.6/lib下的libmysql.dll載入;這樣載入,相比在腳本中采用絕對(duì)路徑,可移植性更好;

?

而后可以看到,左側(cè)文件已被加入;

?

4】使用libmysql.dll中的函數(shù),完成腳本;

5】當(dāng)Insert SQL語(yǔ)句含有中文時(shí),需要設(shè)置字符集為GBK,防止中文亂碼:mysql_query(db_connection,lr_eval_string("SET NAMES gbk"));

完整代碼:

1vuser_init.c文件內(nèi)容

int??rc;? int??db_connection;?//數(shù)據(jù)庫(kù)連接 int??query_result;?//?查詢結(jié)果集?MYSQL_RES char?**?result_row;?//?查詢的數(shù)據(jù)行 char?*server?=?"*.*.*.*";???//壓測(cè)數(shù)據(jù)庫(kù)IP地址 char?*user?=?"test";????????//壓測(cè)數(shù)據(jù)庫(kù)登錄名 char?*password?=?"test";????//壓測(cè)數(shù)據(jù)庫(kù)登錄密碼 char?*database?=?"TESTDB";??//壓測(cè)數(shù)據(jù)庫(kù)名 int??port?=?8066;???????????//壓測(cè)數(shù)據(jù)庫(kù)端口號(hào) int??unix_socket?=?NULL;? int??flags?=?1;?vuser_init() {//?找到libmysql.dll的所在位置.如果安裝了mysql,并將dll文件導(dǎo)入了腳本內(nèi),可以直接load,不需要路徑rc?=?lr_load_dll("libmysql.dll");if?(rc?!=?0)?{lr_error_message("Could?not?load?libmysql.dll");lr_abort();}//?創(chuàng)建MySQL對(duì)象db_connection?=?mysql_init(NULL);if?(db_connection?==?NULL)?{lr_error_message("Insufficient?memory");lr_abort();}//?連接到MySQL數(shù)據(jù)庫(kù)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();}//若插入數(shù)據(jù)中含有中文,則需要設(shè)置字符集為GBK,防止中文亂碼mysql_query(db_connection,lr_eval_string("SET?NAMES?gbk"));return?0; }

2Ation.c文件內(nèi)容

Action()

{

  //參數(shù)化CUS_CODE等參數(shù);

? ? ?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, '性能測(cè)試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, '性能測(cè)試專用', "

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"'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;

}

3vuser_end.c文件內(nèi)容

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

備注:

 ?、僦苯酉驍?shù)據(jù)庫(kù)插入數(shù)據(jù)庫(kù),建議“Version”字段默認(rèn)給1,該字段有時(shí)是樂(lè)觀鎖的實(shí)現(xiàn)方式之一,沒(méi)有值可能導(dǎo)致服務(wù)器報(bào)“樂(lè)觀鎖”錯(cuò)誤;

附錄-----留存:

  libmysql.dll動(dòng)態(tài)鏈接庫(kù)提供了很多函數(shù)來(lái)對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,大致可以分為以下幾類:

  函數(shù)的具體參數(shù)和使用方法也可以參考與libmysql.dll對(duì)于的頭文件mysql.h

第一部分?控制類函數(shù)

mysql_init()初始化MySQL對(duì)象

mysql_options()設(shè)置連接選項(xiàng)

mysql_real_connect()連接到MySQL數(shù)據(jù)庫(kù)

mysql_real_escape_string()將查詢串合法化

mysql_query()發(fā)出一個(gè)以空字符結(jié)束的查詢串

mysql_real_query()發(fā)出一個(gè)查詢串

mysql_store_result()一次性傳送結(jié)果

mysql_use_result()逐行傳送結(jié)果

mysql_free_result()釋放結(jié)果集

mysql_change_user()改變用戶

mysql_select_db()改變默認(rèn)數(shù)據(jù)庫(kù)

mysql_debug()送出調(diào)試信息

mysql_dump_debug_info()轉(zhuǎn)儲(chǔ)調(diào)試信息

mysql_ping()測(cè)試數(shù)據(jù)庫(kù)是否處于活動(dòng)狀態(tài)

mysql_shutdown()請(qǐng)求數(shù)據(jù)庫(kù)SHUTDOWN

mysql_close()關(guān)閉數(shù)據(jù)庫(kù)連接

第二部分?信息獲取類函數(shù)

mysql_character_set_name()獲取默認(rèn)字符集

mysql_get_client_info()獲取客戶端信息

mysql_host_info()獲取主機(jī)信息

mysql_get_proto_info()獲取協(xié)議信息

mysql_get_server_info()獲取服務(wù)器信息

mysql_info()獲取部分查詢語(yǔ)句的附加信息

mysql_stat()獲取數(shù)據(jù)庫(kù)狀態(tài)

mysql_list_dbs()獲取數(shù)據(jù)庫(kù)列表

mysql_list_tables()獲取數(shù)據(jù)表列表

mysql_list_fields()獲取字段列表

第三部分?行列類操作函數(shù)

mysql_field_count()獲取字段數(shù)

mysql_affected_rows()獲取受影響的行數(shù)

mysql_insert_id()獲取AUTO_INCREMENT列的ID值

mysql_num_fields()獲取結(jié)果集中的字段數(shù)

mysql_field_tell()獲取當(dāng)前字段位置

mysql_field_seek()定位字段

mysql_fetch_field()獲取當(dāng)前字段

mysql_fetch_field_direct()獲取指定字段

mysql_frtch_fields()獲取所有字段的數(shù)組

mysql_num_rows()獲取行數(shù)

mysql_fetch_lengths()獲取行長(zhǎng)度

mysql_row_tell()獲取當(dāng)前行位置

mysql_row_seek()行定位

mysql_da ta_seek()行定位

mysql_fetch_row()獲取當(dāng)前行

第四部分?線程類操作函數(shù)

mysql_list_processes()返回所有線程列表

mysql_thread_id()獲取當(dāng)前線程ID

mysql_thread_safe()是否支持線程方式

mysql_kill()殺列一個(gè)線程

第五部分?出錯(cuò)處理類函數(shù)

mysql_errno()獲取錯(cuò)誤號(hào)

mysql_error()獲取錯(cuò)誤信息

第六部分?已過(guò)時(shí)的函數(shù)

mysql_connect()

mysql_create_db()

mysql_drop_db()

mysql_eof()

mysql_reload()

mysql_escape_string()










本文轉(zhuǎn)自 小強(qiáng)測(cè)試幫 51CTO博客,原文鏈接:http://blog.51cto.com/xqtesting/2065920,如需轉(zhuǎn)載請(qǐng)自行聯(lián)系原作者

總結(jié)

以上是生活随笔為你收集整理的loadrunner通过使用libmysql.dll完成mysql的测试的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。