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 }