loadrunner动态从mysql取值

loadrunner动态从mysql取值 [需要下载跟数据库服务器一致的dll,32位或64位]

loadrunner中有参数化从数据库中取值,但是只是静态的,对于一些要实时取值的数据就game over了,比如取短信验证码,因为MySQL中有一个libmysql.dll,里面提供了可以操作数据库的方法,所以我们可以调用这个dll连接数据库实时从数据库中取值

 1 Action()
 2 {
 3 
 4     int status;                           //定义状态变量,0表示成功,非0表示失败  
 5     int db_connection;                  //定义初始化状态     
 6     int result;                   //定义查询结果状态                
 7     char *server = "*****";         // 数据库的ip地址  
 8     char *user = "test";                // 用户名  
 9     char *password = "123456";                // 密码  
10     char *database = "*****";          // 数据库名称  
11     int port = 3306;                    // 端口  
12     int socket = NULL;               
13     int flags = 0;        
14     char** result_set;                 //定义查询的结果集  
15 
16   //数据库操作     
17     status=lr_load_dll("E:\\VuGen Scripts\\libmysql.dll");       
18 
19     if (status!=0) {                           
20         lr_error_message("不能加载dll文件");  
21         lr_error_message("%s",mysql_error(db_connection));//打印加载失败错误信息  
22         mysql_close(db_connection);  
23         lr_abort();                 
24     }  
25 
26     db_connection=mysql_init(NULL); //初始化mysql连接  
27     if (db_connection==NULL ) {     //如果链接状态为空就退出  
28         lr_abort();  
29     }  
30 
31     status=mysql_real_connect(db_connection,server,user,password,database,port,socket,flags);//连接到mysql数据库  
32 
33 //打印连接不成功的原因  
34     if (status==NULL) {   
35         lr_error_message("%s",mysql_error(db_connection));
36         mysql_close(db_connection);
37         lr_abort();
38     }
39 
40   //调用dll方法执行查询语句
41     status=mysql_query(db_connection,"select vcode from cb_vcode_list where telphone=180******** and is_deleted=0");
42 
43   //打印查询失败的原因
44     if (status!=0) {                                        
45         lr_error_message("%s",mysql_error(db_connection));
46         mysql_close(db_connection);
47         lr_abort();
48     }
49 
50     result=mysql_use_result(db_connection);//查询数据表
51 
52    while (result_set=(char**)mysql_fetch_row(result)) {
53 
54        lr_save_string(result_set[0],"vcode");       //将获取的数据保存为参数vcode
55        lr_output_message("vcode is %s",lr_eval_string("{vcode}")); //打印数据
56 
57         if ( result_set==NULL) {           //如果查询结果行为空 ,就关闭并退出
58            lr_error_message("没有查询到结果");
59             mysql_free_result(result);
60             mysql_close(db_connection);
61             lr_abort();
62         }
63     }
64 
65    mysql_free_result(result);  //释放结果集
66    mysql_close(db_connection);      //关闭数据库连接  
67 
68     return 0;
69 }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java相关

CentOS7使用dnf安装mysql

1465
来自专栏深度学习之tensorflow实战篇

SQL中distinct的用法

在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。关键词 distinct用于返回唯一不同的值。 表A: ? 表...

3483
来自专栏程序猿

MySQL加载本地文本、导入SQL文件及其他常见命令行。

1293
来自专栏数据库

Oracle 数据库常用操作语句大全

一、Oracle数据库操作 1、创建数据库 create database databasename 2、删除数据库 drop database dbname ...

19410
来自专栏企鹅号快讯

数据库管理你懂得多少?

导读 数据连接除了数据库连接池之外,还有一个非常重要的功能点,那就是数据库管理。也许你会说,这个很简单:查询、删除、导入、导出。那你知道导入、导出表时是否含表的...

2648
来自专栏Java技术分享

MYSQL定位慢查询

在web开发中,我们经常会写出一些SQL语句,一条糟糕的SQL语句可能让你的整个程序都非常慢,超过10秒一般用户就会选择关闭网页。

60515
来自专栏xiaoheike

linux 创建sudo账号.md

root ALL=(ALL) ALL 在该行下面添加: username ALL=(ALL) ALL

1161
来自专栏阿炬.NET

SQL Server2000导出数据时包含主键、字段默认值、描述等信息

36911
来自专栏lgp20151222

mysql 链接时报错:1251-Client does not support authentication protocol requested by server

可以看到root用户使用的plugin是caching_sha2_password,mysql官方网站有如下说明:

2244
来自专栏企鹅号快讯

十个实用MySQL命令

前言 今天介绍一些MySQL常用的实用命令,都是一些比较简单的命令。已经知道的朋友,就当是巩固吧,不知道的童鞋,可以好好在自己的机器上,练习下。 0. 显示数据...

1969

扫码关注云+社区

领取腾讯云代金券