




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、此代码为Loadrunner 8 通过C API类型的Vuser 测试MySQL性能,或者测试sql语句性能的脚本。这东西很少有人用,网上资料很少,一般测试B/S的很多。 CODE:view plaincopy to clipboardprint?/*需要的表结构如下 CREATE TABLE test_data ( order_id BIGINT UNSIGNED NOT NULL COMMENT Order numbers. Must be unique., status BOOL NOT NULL DEFAULT 0 COMMENT Whether data has been used
2、or not. A value of 0 means FALSE., date_used DATETIME NULL COMMENT Date/time that the data was used., UNIQUE ( order_id ) ) ENGINE = innodb COMMENT = LoadRunner test data; */ Action()int rc; int db_connection; / 数据库连接int query_result; / 查询结果集 MYSQL_RESchar* result_row; / 查询的数据衕 char *server = localh
3、ost;char *user = root;char *password = 123456;char *database = test;int port = 3306;int unix_socket = NULL; int flags = 0; / 找到libmysql.dll的所在位置.rc = lr_load_dll(C:Program FilesMySQLMySQL Server 5.1binlibmysql.dll);if (rc != 0) lr_error_message(Could not load libmysql.dll); lr_abort(); / 创建MySQL对象db
4、_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_c
5、onnection); lr_abort(); / 向数据库插入数据/ 此处的 ORDER_ID 是一个参数,简单测试时可以用一个常数代替lr_save_string (lr_eval_string(INSERT INTO test_data (order_id) VALUES (ORDER_ID),paramInsertQuery); rc = mysql_query(db_connection, lr_eval_string(paramInsertQuery);if (rc != 0) lr_error_message(%s, mysql_error(db_connection); mys
6、ql_close(db_connection); lr_abort(); / 从数据库读取一个数据并显示rc = mysql_query(db_connection, SELECT order_id FROM test_data WHERE status IS FALSE LIMIT 1);if (rc != 0) lr_error_message(%s, mysql_error(db_connection); mysql_close(db_connection); lr_abort();query_result = mysql_use_result(db_connection);if (qu
7、ery_result = NULL) lr_error_message(%s, mysql_error(db_connection); mysql_free_result(query_result); mysql_close(db_connection); lr_abort();/ 如果结果集包含多行数据,需要多次调用 mysql_fetch_row 直到返回NULLresult_row = (char *)mysql_fetch_row(query_result); if (result_row = NULL) lr_error_message(Did not expect the resu
8、lt set to be empty); mysql_free_result(query_result); mysql_close(db_connection); lr_abort();/ 保存参数,用于删除这行数据lr_save_string(result_row0, paramOrderID);lr_output_message(Order ID is: %s, lr_eval_string(paramOrderID);mysql_free_result(query_result); / 在事务里更新一行数据,需要用InnoDB引擎rc = mysql_query(db_connectio
9、n, BEGIN); /启动事务if (rc != 0) lr_error_message(%s, mysql_error(db_connection); mysql_close(db_connection); lr_abort();/ 使用 FOR UPDATE 锁住要更新的数据行rc = mysql_query(db_connection, SELECT order_id FROM test_data WHERE status IS FALSE LIMIT 1 FOR UPDATE); if (rc != 0) lr_error_message(%s, mysql_error(db_con
10、nection); mysql_close(db_connection); lr_abort();query_result = mysql_use_result(db_connection);if (query_result = NULL) lr_error_message(%s, mysql_error(db_connection); mysql_free_result(query_result); mysql_close(db_connection); lr_abort();result_row = (char *)mysql_fetch_row(query_result); if (re
11、sult_row = NULL) lr_error_message(没有查询到结果); mysql_free_result(query_result); mysql_close(db_connection); lr_abort();lr_save_string(result_row0, paramOrderID);lr_output_message(Order ID is: %s, lr_eval_string(paramOrderID);mysql_free_result(query_result);lr_save_string(lr_eval_string(UPDATE test_data
12、 SET status=TRUE, date_used=NOW() WHERE order_id=paramOrderID),paramUpdateQuery);rc = mysql_query(db_connection, lr_eval_string(paramUpdateQuery);if (rc != 0) lr_error_message(%s, mysql_error(db_connection); mysql_close(db_connection); lr_abort();rc = mysql_query(db_connection, COMMIT); / 提交事务if (rc
13、 != 0) lr_error_message(%s, mysql_error(db_connection); mysql_close(db_connection); lr_abort(); / 再次查找数据,应该为空了,因为前面的事务更新了标志rc = mysql_query(db_connection, SELECT order_id FROM test_data WHERE status IS FALSE LIMIT 1);if (rc != 0) lr_error_message(%s, mysql_error(db_connection); mysql_close(db_connec
14、tion); lr_abort();query_result = mysql_use_result(db_connection);if (query_result = NULL) lr_error_message(%s, mysql_error(db_connection); mysql_free_result(query_result); mysql_close(db_connection); lr_abort();result_row = (char *)mysql_fetch_row(query_result);if (result_row = NULL) lr_output_messa
15、ge(Result set is empty as expected); mysql_free_result(query_result); else lr_error_message(Did not expect the result set to contain any rows); mysql_free_result(query_result); mysql_close(db_connection); lr_abort(); / 删除数据lr_save_string(lr_eval_string(DELETE FROM test_data WHERE order_id = paramOrd
16、erID),paramDeleteQuery);rc = mysql_query(db_connection, lr_eval_string(paramDeleteQuery);if (rc != 0) lr_error_message(%s, mysql_error(db_connection); mysql_close(db_connection); lr_abort(); / 释放MySQL资源mysql_close(db_connection); return 0; /*需要的表结构如下CREATE TABLE test_data (order_id BIGINT UNSIGNED N
17、OT NULL COMMENT Order numbers. Must be unique.,status BOOL NOT NULL DEFAULT 0 COMMENT Whether data has been used or not. A value of 0 means FALSE.,date_used DATETIME NULL COMMENT Date/time that the data was used.,UNIQUE ( order_id) ENGINE = innodb COMMENT = LoadRunner test data;*/Action()int rc;int
18、db_connection; / 数据库连接int query_result; / 查询结果集 MYSQL_RESchar* result_row; / 查询的数据衕char *server = localhost;char *user = root;char *password = 123456;char *database = test;int port = 3306;int unix_socket = NULL;int flags = 0;/ 找到libmysql.dll的所在位置.rc = lr_load_dll(C:Program FilesMySQLMySQL Server 5.1
19、binlibmysql.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,
20、unix_socket, flags);if (rc = NULL) lr_error_message(%s, mysql_error(db_connection); mysql_close(db_connection); lr_abort();/ 向数据库插入数据/ 此处的 ORDER_ID 是一个参数,简单测试时可以用一个常数代替lr_save_string (lr_eval_string(INSERT INTO test_data (order_id) VALUES (ORDER_ID),paramInsertQuery);rc = mysql_query(db_connection,
21、lr_eval_string(paramInsertQuery);if (rc != 0) lr_error_message(%s, mysql_error(db_connection); mysql_close(db_connection); lr_abort();/ 从数据库读取一个数据并显示rc = mysql_query(db_connection, SELECT order_id FROM test_data WHERE status IS FALSE LIMIT 1);if (rc != 0) lr_error_message(%s, mysql_error(db_connecti
22、on); mysql_close(db_connection); lr_abort();query_result = mysql_use_result(db_connection);if (query_result = NULL) lr_error_message(%s, mysql_error(db_connection); mysql_free_result(query_result); mysql_close(db_connection); lr_abort();/ 如果结果集包含多行数据,需要多次调用 mysql_fetch_row 直到返回NULLresult_row = (char
23、 *)mysql_fetch_row(query_result);if (result_row = NULL) lr_error_message(Did not expect the result set to be empty); mysql_free_result(query_result); mysql_close(db_connection); lr_abort();/ 保存参数,用于删除这行数据lr_save_string(result_row0, paramOrderID);lr_output_message(Order ID is: %s, lr_eval_string(para
24、mOrderID);mysql_free_result(query_result);/ 在事务里更新一行数据,需要用InnoDB引擎rc = mysql_query(db_connection, BEGIN); /启动事务if (rc != 0) lr_error_message(%s, mysql_error(db_connection); mysql_close(db_connection); lr_abort();/ 使用 FOR UPDATE 锁住要更新的数据行rc = mysql_query(db_connection, SELECT order_id FROM test_data
25、WHERE status IS FALSE LIMIT 1 FOR UPDATE);if (rc != 0) lr_error_message(%s, mysql_error(db_connection); mysql_close(db_connection); lr_abort();query_result = mysql_use_result(db_connection);if (query_result = NULL) lr_error_message(%s, mysql_error(db_connection); mysql_free_result(query_result); mys
26、ql_close(db_connection); lr_abort();result_row = (char *)mysql_fetch_row(query_result);if (result_row = NULL) lr_error_message(没有查询到结果); mysql_free_result(query_result); mysql_close(db_connection); lr_abort();lr_save_string(result_row0, paramOrderID);lr_output_message(Order ID is: %s, lr_eval_string
27、(paramOrderID);mysql_free_result(query_result);lr_save_string(lr_eval_string(UPDATE test_data SET status=TRUE, date_used=NOW() WHERE order_id=paramOrderID),paramUpdateQuery);rc = mysql_query(db_connection, lr_eval_string(paramUpdateQuery);if (rc != 0) lr_error_message(%s, mysql_error(db_connection); mysql_close(db_connection); lr_abort();rc = mysql_query(db_connection, COMMIT); / 提交事务if (rc != 0) lr_error_message(%s, mysql_error(db_connection); mysql_close(db_connection); lr_abort();/ 再次查找数据,应该为空了,因为前面的事务更新了标志rc = mysql_query(db_connection, SELECT order_id FROM test_data WHERE status IS FA
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025工厂员工安全培训考试试题附参考答案(黄金题型)
- 2025年新版车间安全培训考试试题及下载答案可打印
- 2025工厂车间安全培训考试试题【含答案】
- 专题 J-17【简语法-单选题专练】强调句 2025年中考英语讲解+练习题汇编(全国)
- 2025融资租赁合同项目融资授权协议
- 2025家居采购合同模板
- 2025设备租赁协议合同格式
- 2025标准的小型碎石运输合同模板
- 2025房屋租赁合同简易范本全新版
- 2025《合同法》之规定合同解除情形
- 国家广播电视总局无线电台管理局考试试题及答案
- 提问技巧与沟通客户需求
- 园林植物的识别与应用-乔木园林植物的识别与应用
- 病理学 实验九 心血管系统疾病(Ⅰ)
- 第10课《绿色上网》教学设计
- 舞台艺术与表演技巧教程
- 无人机驾驶员培训计划及大纲
- 公路工程技术标准(JTG B01-2003)
- 江苏省书法水平等级证书考试-硬笔书法考试专用纸-(123级)
- 13J104《蒸压加气混凝土砌块、板材构造》
- (完整word)软件验收单
评论
0/150
提交评论