libraries.zip  地址:链接:https://pan.baidu.com/s/1kIZ2aBCOFSJ9l727MxgIKQ 密码:40vq

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

loadrunner如何对mysql进行增删改查的更多相关文章

  1. Java连接MySQL数据库增删改查通用方法

    版权声明:本文为博主原创文章,未经博主允许不得转载. Java连接MySQL数据库增删改查通用方法 运行环境:eclipse+MySQL 以前我们Java连接MySQL数据库都是一个数据库写一个类,类 ...

  2. MySQL数据库(增删改查语句)

    MySQL数据库(增删改查语句)一.登录数据库:---->  mysql -uroot -proot;(对应用户名和密码)二.SQL语句:    数据定义语言DDL  用来定义数据库.表.列,关 ...

  3. python操作mysql数据库增删改查的dbutils实例

    python操作mysql数据库增删改查的dbutils实例 # 数据库配置文件 # cat gconf.py #encoding=utf-8 import json # json里面的字典不能用单引 ...

  4. Asp.Net操作MySql数据库增删改查

    Asp.Net操作MySql数据库增删改查,话不多说直接步入正题.git源码地址:https://git.oschina.net/gxiaopan/NetMySql.git  1.安装MySQL数据库 ...

  5. Mysql 的 增删改查

    mysql的增删改查 1:新建数据库 create database 数据库名 [其他选项]; 2:新建数据表 create table students ( id int unsigned not ...

  6. MySQL之增删改查之

    MySQL之增删改查   前言:以下是MySQL最基本的增删改查语句,很多IT工作者都必须要会的命令,也是IT行业面试最常考的知识点,由于是入门级基础命令,所有所有操作都建立在单表上,未涉及多表操作. ...

  7. MySql之增删改查 · YbWork's Studio

    前提:在进行"增删改查"的操作之前,先建立一个包含数据表student的数据库(具体操作可以见MySQL之最基本命令): 1."增"--添加数据 1.1 为表中 ...

  8. 使用MySQL练习增删改查时因为版本问题出现连接错误

    使用MySQL练习增删改查时出现连接错误,错误提示如下: 2020-02-19 19:53:51.088 ERROR 16328 --- [reate-249798694] com.alibaba.d ...

  9. koa+mysql实现增删改查-全栈之路(001)

    Date: 2020-4-23 以前很少写文章,从今天开始我要挑战一下自己,连续输出100篇技术类文章.这100篇文章我尽量以实战案例为主. 如果你觉得本文还不错,记得关注或者给个 star,你们的赞 ...

随机推荐

  1. 牛客网 PAT 算法历年真题 1011 : 个位数统计 (15)

    个位数统计 (15) 时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 给定一个k位整数N = dk-1*10k- ...

  2. nodejs安装 淘宝镜像

    1◆ nodejs下载 2◆ 安装 3◆ 测试   4◆ 淘宝镜像 npm install -g cnpm --registry=https://registry.npm.taobao.org   5 ...

  3. LY.JAVA面向对象编程.内存图

    2018-07-06 一个对象的内存图 两个对象的内存图 三个对象的内存图 this static super 向上转型 向下转型

  4. java this的用法

    this 含义:代表当前对象 用法: 用于返回对象的引用 示例代码 public class Test { public Test f() { return this;//获取当前对象的引用 } pu ...

  5. 个人前端学习路线图与github优秀前端开发者的路线图推荐

    1.个人目前学习的路线图 2.github优秀前端开发者的路线图推荐 打开github首页,在搜索框输入developer-roadmap,搜索github前端路线图 选择kamranahmedse/ ...

  6. 利用awk处理学生成绩问题(难度较大)

    学生成绩表单如下: Name,Team,First Test, Second Test, Third Test Tom,Red,,, Joe,Green,,, Maria,Blue,,, Fred,B ...

  7. 洛谷 P4515 [COCI2009-2010#6] XOR

    题意 平面直角坐标系中有一些等腰直角三角形,且直角边平行于坐标轴,直角顶点在右下方,求奇数次被覆盖的面积.N<=10.输入为x,y,r,分别表示三角形顶点的坐标与三角形的边长. 如: 总面积为0 ...

  8. Interlocked单向链式栈

    线程同步一大部分与原子访问(atomic access)有关, 所谓原子访问, 指的是一个线程在访问某个资源的同时能够保证没有其他线程会在同一时刻访问同一资源. Interlocked单向链式栈的操作 ...

  9. vivado自动化tcl实现(更新中)

    ug1197-vivado-high-level-productivity vivado中如何使用自动化工具进行设计?用过的项目有AD9361提供的官方例子中,使用了自动化方式,可以借鉴.

  10. Gym - 100989M(dp)

    George met AbdelKader in the corridor of the CS department busy trying to fix a group of incorrect e ...