loadrunner 操作mysql_loadRunner Mysql 数据库操作

/*

*     Time: 2015-11-03

*     Author: 帮主

*/

/*

*   写之前先 理一下,数据库访问流程

*

*   打开数据库  --> 数据库操作 ---> 关闭数据库

*   1、打开数据库

*         a、数据库服务器地址/IP ,当然有端口号的

*         b、数据库服务器访问用户 和 密码

*         c、数据库服务器中的数据库名称

*         d、开始连接数据库

*   2、数据库操作

*         增删改查

*   3、所有的操作都做完后,一定要关闭数据库。

*

*/

/*

*   说明一下,因为 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;

// 连接数据库

//1、首先先把动态库文件导入,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();

}

// 2、开始链接数据库 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);

}

// 以上只是做了一个简单、正确的例子(每次例子都自己跑过),只是提供一个思路。提醒一下,mysql 如果同时操作表,要加锁的。这样能保证数据的正确性、安全性

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值