老李分享:loadrunner操作mysql数据库

 

     在poptest测试开发工程师就业培训的课程中,针对一套商业系统进行性能测试,目标是mysql后台数据库的负载能力,在这里我把测试代码进行了简化,主要是循环单插入数据100次,只是针对单表进行插入,在课堂上我们构造了复杂的应用测试场景,后台表涉及到多表,通过频繁插入操作查看负载情况。db2的数据库操作大家可以看前面的文章。

     测试开发工程师没有那么难,关键是训练,poptest是唯一一家在做测试开发工程师培训的机构,在不断的摸索更加有效的培训方式。

#define MAX 100
Action()
{
 
  int i,rc,fp;
  int db_connection; // 数据库连接
  int query_result; // 查询结果集 MYSQL_RES
  char** result_row; // 查询的数据
  char *server = "127.0.0.1";
  char *user = "laoli";
  char *password = "0123456";
  char *database = "testing";
  int port = 3306;
  int unix_socket = NULL;
  int flags = 0;
  long t;
  time(&t);

  rc = lr_load_dll("c:\\Program Files\\APMServ5.2.6\\MySQL5\\lib\\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();
  }
    // 打开文件资源(初始化)
  fp=fopen("d:\\Test\\VirtualAccount\\CreateVirtualData.txt","at");
  if(fp == NULL){
     lr_log_message("Error !");
   //fprintf(stderr,"fopen failed!%s\n",strerror(errno));
  fclose(fp);
  lr_abort();
  }

//  其中 crtime必须为当日日期 pay_id每条记录不能重复。number为商品ID,money为本次入账金额。
   for(i=0;i<=MAX;i++)
   {
  
   // lr_output_message("Count: %d ",i);  
     lr_save_string (lr_eval_string("insert into tudou_money (`user`,`name`,  `time`, `num`) "
 "VALUES ('010','{name}', '2015-08-17 08:11:10', '1')"),"InsertQuery");
  rc = mysql_query(db_connection, lr_eval_string("{InsertQuery}"));
     
    lr_output_message("--------Current SQL is :%s",lr_eval_string("{InsertQuery}"));
   //写文件操作
    fprintf(fp,"CurrnetTime is:%s Counts:%d ---Current SQL is :%s\n",ctime(&t),i,lr_eval_string("{paramInsertQuery}"));

     //对执行语句的结果判断,当出错时输出错误到指定文件中并关闭资源终止脚本执行。

    if (rc != NULL) {
    fprintf(fp,"CurrnetTime is:%s Counts:%d ---Error SQL is :%s\n",ctime(&t),i,lr_eval_string("{paramInsertQuery}"));
    mysql_close(db_connection);
    fclose(fp);

   lr_abort();
  }
 

   }
  if (rc != 0) {
    lr_error_message("%s", mysql_error(db_connection));
    mysql_close(db_connection);
    lr_abort();
  }
  /*
  // 从数据库读取当前插入的数据并显示
  lr_save_string (lr_eval_string("select * from test_users where user_id='1'"),"SelectQuery");
  rc = mysql_query(db_connection, lr_eval_string("{SelectQuery}"));
  lr_output_message("--------Current SQL is :%s",lr_eval_string("{SelectQuery}"));
  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);
    mysql_close(db_connection);
    lr_abort();
  }
  */
    // 释放MySQL与文件资源
  mysql_close(db_connection);
  fclose(fp);
  return 0;
}

  整个代码核心思路就是打开连接,操作数据库(操作n次,形态多样),关闭连接,

   poptest测试开发工程师,性能测试咨询群:450192312

老李分享:loadrunner操作mysql数据库的更多相关文章

  1. Python操作MySQL数据库9个实用实例

    用python连接mysql的时候,需要用的安装版本,源码版本容易有错误提示.下边是打包了32与64版本. MySQL-python-1.2.3.win32-py2.7.exe MySQL-pytho ...

  2. PHP操作MySQL数据库5个步骤

    PHP操作MySQL数据库一般可分为5个步骤:1.连接MySQL数据库服务器:2.选择数据库:3.执行SQL语句:4.关闭结果集:5断开与MySQL数据库服务器连接. 1.用mysql_connect ...

  3. python操作mysql数据库的相关操作实例

    python操作mysql数据库的相关操作实例 # -*- coding: utf-8 -*- #python operate mysql database import MySQLdb #数据库名称 ...

  4. 转 用C API 操作MySQL数据库

    用C API 操作MySQL数据库 参考MYSQL的帮助文档整理 这里归纳了C API可使用的函数,并在下一节详细介绍了它们.请参见25.2.3节,“C API函数描述”. 函数 描述 mysql_a ...

  5. PHP操作mysql数据库:[2]查询数据听语音

    本文主要详细讲解如何使用php语言,对mysql数据库进行查询.添加.删除.更新等操作. 工具/原料   Macromedia Dreamweaver 8 mysql数据库,php语言 一.前言   ...

  6. Code First操作Mysql数据库

    前面博客也讲了,自己做一个网站,选用的是MVC+EF Code First+MySql+EasyUI,先说下技术选型.一.为什么选择MVC? 因为之前自己做的系统大部分是webForm,MVC的之前也 ...

  7. JDBC操作MySQL数据库案例

    JDBC操作MySQL数据库案例 import java.sql.Connection; import java.sql.DriverManager; import java.sql.Prepared ...

  8. shell脚本操作mysql数据库

    shell脚本操作mysql数据库,使用mysql的-e参数可以执行各种sql的(创建,删除,增,删,改.查)等各种操作 mysql  -hhostname -Pport -uusername -pp ...

  9. Java使用Jdbc操作MySql数据库(一)

    这个示例是Java操作MySql的基本方法. 在这个示例之前,要安装好MySql,并且配置好账户密码,创建一个logininfo数据库,在数据库中创建userinfo数据表.并且在表中添加示例数据. ...

随机推荐

  1. gitHub搭建

    1.注册一个gitHub账户 2.新建立一个远程仓库(登陆进去后-->点击图标 --> New repository ) 3.跳转后,填写相关信息(仓库名称及选项) 4.在本地的文件夹里右 ...

  2. sizeof和strlen的区别和联系总结

    link:http://blog.csdn.net/ghevinn/article/details/9974967    strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头 ...

  3. Android游戏开发实践(1)之NDK与JNI开发04

    Android游戏开发实践(1)之NDK与JNI开发04 有了前面几篇NDK与JNI开发相关基础做铺垫,再来通过代码说明下这方面具体的操作以及一些重要的细节.那么,就继续NDK与JNI的学习总结. 作 ...

  4. TCP详解

    1. 数据进入协议栈的封装过程 2. TCP连接的三次握手 3. TCP连接的三次握手和关闭时的四次握手 各个状态的意义如下: LISTEN - 侦听来自远方TCP端口的连接请求: SYN-SENT ...

  5. 下载安装Cygwin

    下载程序 http://www.cygwin.com/ 安装程序 下载完成后,运行setup.exe程序,出现安装画面. 直接点“下一步”,出现安装模式的对话框,如下图所示: 这里可以看到有三种安装模 ...

  6. 简单说说NoHTTP

    学习NoHttp的原因是由于公司之前做的产品使用的网络请求框架一直都是Volley(为什么使用Volley就不用多说了,最起码是谷歌开发团队自己搞的,总感觉权威一些),可是自从android6.0推出 ...

  7. TypeScript 优秀开源项目大合集

    TypeScript出来有段时间了,也冒出了很多用TypeScript开发的优秀开源项目,搜寻了一些基于TypeScript项目,分享给大家: https://github.com/brookshi/ ...

  8. mfc---获取当前时间

    CTime t = CTime::GetCurrentTime(); CString strTime = t.format("%Y/&m%d" %h:%M:%S);

  9. [ZooKeeper.net] 1 模仿dubbo实现一个简要的http服务的注册 基于webapi

    今天来试着模仿下dubbo实现一个简要的http服务的注册,虽说是模仿不过是很廉价的那种,只是模仿了一点点点...... 先放上demo目录结构: 开头还是把ZooKeeper的一些简要介绍搬过来看看 ...

  10. 转:关于JSON.parse(),JSON.stringify(),jQuery.parseJSON()的用法

    1. JSON.parse(jsonString): 在一个字符串中解析出JSON对象 ? 1 2 3 var str = '[{"href":"baidu.com&qu ...