loadrunner動態從mysql取值

loadrunner中有參數化從數據庫中取值,但是隻是靜態的,對於一些要實時取值的數據就game over了,比如取短信驗證碼,因爲mysql中有一個libmysql.dll,裏面提供了可以操作數據庫的方法,所以我們可以調用這個dll連接數據庫實時從數據庫中取值

Action()
{

    int status;                           //定義狀態變量,0表示成功,非0表示失敗  
    int db_connection;                  //定義初始化狀態     
    int result;                   //定義查詢結果狀態                
    char *server = "*****";         // 數據庫的ip地址  
    char *user = "test";                // 用戶名  
    char *password = "123456";                // 密碼  
    char *database = "*****";          // 數據庫名稱  
    int port = 3306;                    // 端口  
    int socket = NULL;               
    int flags = 0;        
    char** result_set;                 //定義查詢的結果集  

  //數據庫操作     
    status=lr_load_dll("E:\\VuGen Scripts\\libmysql.dll");       

    if (status!=0) {                           
        lr_error_message("不能加載dll文件");  
        lr_error_message("%s",mysql_error(db_connection));//打印加載失敗錯誤信息  
        mysql_close(db_connection);  
        lr_abort();                 
    }  

    db_connection=mysql_init(NULL); //初始化mysql連接  
    if (db_connection==NULL ) {     //如果鏈接狀態爲空就退出  
        lr_abort();  
    }  

    status=mysql_real_connect(db_connection,server,user,password,database,port,socket,flags);//連接到mysql數據庫  

//打印連接不成功的原因  
    if (status==NULL) {   
        lr_error_message("%s",mysql_error(db_connection));
        mysql_close(db_connection);
        lr_abort();
    }

  //調用dll方法執行查詢語句
    status=mysql_query(db_connection,"select vcode from cb_vcode_list where telphone=180******** and is_deleted=0");

  //打印查詢失敗的原因
    if (status!=0) {                                        
        lr_error_message("%s",mysql_error(db_connection));
        mysql_close(db_connection);
        lr_abort();
    }

    result=mysql_use_result(db_connection);//查詢數據表

   while (result_set=(char**)mysql_fetch_row(result)) {

       lr_save_string(result_set[0],"vcode");       //將獲取的數據保存爲參數vcode
       lr_output_message("vcode is %s",lr_eval_string("{vcode}")); //打印數據

        if ( result_set==NULL) {           //如果查詢結果行爲空 ,就關閉並退出
           lr_error_message("沒有查詢到結果");
            mysql_free_result(result);
            mysql_close(db_connection);
            lr_abort();
        }
    }

   mysql_free_result(result);  //釋放結果集
   mysql_close(db_connection);      //關閉數據庫連接  

    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章