<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    qileilove

    blog已經轉移至github,大家請訪問 http://qaseven.github.io/

    Loadrunner測試數據庫、SQL語句性能

    Action()  
     
    int rc;   
    int db_connection; // 數據庫連接  
    int query_result; // 查詢結果集 MYSQL_RES  
    char** result_row; // 查詢的數據衕  
       
    char *server = "localhost";  
    char *user = "root";  
    char *password = "123456";  
    char *database = "test";  
    int port = 3306;  
    int unix_socket = NULL;   
    int flags = 0;   
       
    // 找到libmysql.dll的所在位置.  
    rc = lr_load_dll("C:\\Program Files\\MySQL\\MySQL Server 5.1\\bin\\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();  
     
       
    // 向數據庫插入數據  
    // 此處的 {ORDER_ID} 是一個參數,簡單測試時可以用一個常數代替  
    lr_save_string (lr_eval_string("INSERT INTO test_data (order_id) VALUES ({ORDER_ID})"),"paramInsertQuery");   
    rc = mysql_query(db_connection, lr_eval_string("{paramInsertQuery}"));  
    if (rc != 0) {  
        lr_error_message("%s", mysql_error(db_connection));  
        mysql_close(db_connection);  
        lr_abort();  
     
       
    // 從數據庫讀取一個數據并顯示  
    rc = mysql_query(db_connection, "SELECT order_id FROM test_data WHERE status IS FALSE LIMIT 1");  
    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_fetch_row 直到返回NULL  
    result_row = (char **)mysql_fetch_row(query_result);   
    if (result_row == NULL) {  
        lr_error_message("Did not expect the result set to be empty");  
        mysql_free_result(query_result);  
        mysql_close(db_connection);  
        lr_abort();  
     
    // 保存參數,用于刪除這行數據  
    lr_save_string(result_row[0], "paramOrderID");  
    lr_output_message("Order ID is: %s", lr_eval_string("{paramOrderID}"));  
    mysql_free_result(query_result);  
       
    // 在事務里更新一行數據,需要用InnoDB引擎  
    rc = mysql_query(db_connection, "BEGIN"); //啟動事務  
    if (rc != 0) {  
        lr_error_message("%s", mysql_error(db_connection));  
        mysql_close(db_connection);  
        lr_abort();  
     
    // 使用 "FOR UPDATE" 鎖住要更新的數據行  
    rc = mysql_query(db_connection, "SELECT order_id FROM test_data WHERE status IS FALSE LIMIT 1 FOR UPDATE");   
    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();  
     
    result_row = (char **)mysql_fetch_row(query_result);   
    if (result_row == NULL) {  
        lr_error_message("沒有查詢到結果");  
        mysql_free_result(query_result);  
        mysql_close(db_connection);  
        lr_abort();  
     
    lr_save_string(result_row[0], "paramOrderID");  
    lr_output_message("Order ID is: %s", lr_eval_string("{paramOrderID}"));  
    mysql_free_result(query_result);  
    lr_save_string(lr_eval_string("UPDATE test_data SET status=TRUE, date_used=NOW() WHERE order_id='{paramOrderID}'"),"paramUpdateQuery");  
    rc = mysql_query(db_connection, lr_eval_string("{paramUpdateQuery}"));  
    if (rc != 0) {  
        lr_error_message("%s", mysql_error(db_connection));  
        mysql_close(db_connection);  
        lr_abort();  
     
    rc = mysql_query(db_connection, "COMMIT"); // 提交事務  
    if (rc != 0) {  
        lr_error_message("%s", mysql_error(db_connection));  
        mysql_close(db_connection);  
        lr_abort();  
     
       
    // 再次查找數據,應該為空了,因為前面的事務更新了標志  
    rc = mysql_query(db_connection, "SELECT order_id FROM test_data WHERE status IS FALSE LIMIT 1");  
    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();  
     
    result_row = (char **)mysql_fetch_row(query_result);  
    if (result_row == NULL) {  
        lr_output_message("Result set is empty as expected");  
        mysql_free_result(query_result);  
    } else {  
        lr_error_message("Did not expect the result set to contain any rows");  
        mysql_free_result(query_result);  
        mysql_close(db_connection);  
        lr_abort();  
     
       
    // 刪除數據  
    lr_save_string(lr_eval_string("DELETE FROM test_data WHERE order_id = '{paramOrderID}'"),"paramDeleteQuery");  
    rc = mysql_query(db_connection, lr_eval_string("{paramDeleteQuery}"));  
    if (rc != 0) {  
        lr_error_message("%s", mysql_error(db_connection));  
        mysql_close(db_connection);  
        lr_abort();  
     
       
    // 釋放MySQL資源  
    mysql_close(db_connection);  
        return 0;  
    }

    Action()
    {
    int rc;
    int db_connection; // 數據庫連接
    int query_result; // 查詢結果集 MYSQL_RES
    char** result_row; // 查詢的數據衕

    char *server = "localhost";
    char *user = "root";
    char *password = "123456";
    char *database = "test";
    int port = 3306;
    int unix_socket = NULL;
    int flags = 0;

    // 找到libmysql.dll的所在位置.
    rc = lr_load_dll("C:\\Program Files\\MySQL\\MySQL Server 5.1\\bin\\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();
    }

    // 向數據庫插入數據
    // 此處的 {ORDER_ID} 是一個參數,簡單測試時可以用一個常數代替
    lr_save_string (lr_eval_string("INSERT INTO test_data (order_id) VALUES ({ORDER_ID})"),"paramInsertQuery");
    rc = mysql_query(db_connection, lr_eval_string("{paramInsertQuery}"));
    if (rc != 0) {
        lr_error_message("%s", mysql_error(db_connection));
        mysql_close(db_connection);
        lr_abort();
    }

    // 從數據庫讀取一個數據并顯示
    rc = mysql_query(db_connection, "SELECT order_id FROM test_data WHERE status IS FALSE LIMIT 1");
    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_fetch_row 直到返回NULL
    result_row = (char **)mysql_fetch_row(query_result);
    if (result_row == NULL) {
        lr_error_message("Did not expect the result set to be empty");
        mysql_free_result(query_result);
        mysql_close(db_connection);
        lr_abort();
    }
    // 保存參數,用于刪除這行數據
    lr_save_string(result_row[0], "paramOrderID");
    lr_output_message("Order ID is: %s", lr_eval_string("{paramOrderID}"));
    mysql_free_result(query_result);

    // 在事務里更新一行數據,需要用InnoDB引擎
    rc = mysql_query(db_connection, "BEGIN"); //啟動事務
    if (rc != 0) {
        lr_error_message("%s", mysql_error(db_connection));
        mysql_close(db_connection);
        lr_abort();
    }
    // 使用 "FOR UPDATE" 鎖住要更新的數據行
    rc = mysql_query(db_connection, "SELECT order_id FROM test_data WHERE status IS FALSE LIMIT 1 FOR UPDATE");
    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();
    }
    result_row = (char **)mysql_fetch_row(query_result);
    if (result_row == NULL) {
        lr_error_message("沒有查詢到結果");
        mysql_free_result(query_result);
        mysql_close(db_connection);
        lr_abort();
    }
    lr_save_string(result_row[0], "paramOrderID");
    lr_output_message("Order ID is: %s", lr_eval_string("{paramOrderID}"));
    mysql_free_result(query_result);
    lr_save_string(lr_eval_string("UPDATE test_data SET status=TRUE, date_used=NOW() WHERE order_id='{paramOrderID}'"),"paramUpdateQuery");
    rc = mysql_query(db_connection, lr_eval_string("{paramUpdateQuery}"));
    if (rc != 0) {
        lr_error_message("%s", mysql_error(db_connection));
        mysql_close(db_connection);
        lr_abort();
    }
    rc = mysql_query(db_connection, "COMMIT"); // 提交事務
    if (rc != 0) {
        lr_error_message("%s", mysql_error(db_connection));
        mysql_close(db_connection);
        lr_abort();
    }

    // 再次查找數據,應該為空了,因為前面的事務更新了標志
    rc = mysql_query(db_connection, "SELECT order_id FROM test_data WHERE status IS FALSE LIMIT 1");
    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();
    }
    result_row = (char **)mysql_fetch_row(query_result);
    if (result_row == NULL) {
        lr_output_message("Result set is empty as expected");
        mysql_free_result(query_result);
    } else {
        lr_error_message("Did not expect the result set to contain any rows");
        mysql_free_result(query_result);
        mysql_close(db_connection);
        lr_abort();
    }

    // 刪除數據
    lr_save_string(lr_eval_string("DELETE FROM test_data WHERE order_id = '{paramOrderID}'"),"paramDeleteQuery");
    rc = mysql_query(db_connection, lr_eval_string("{paramDeleteQuery}"));
    if (rc != 0) {
        lr_error_message("%s", mysql_error(db_connection));
        mysql_close(db_connection);
        lr_abort();
    }

    // 釋放MySQL資源
    mysql_close(db_connection);
    return 0;
    } 
    http://www.testage.net/html/92/n-1892.html

    posted on 2012-06-04 16:04 順其自然EVO 閱讀(1678) 評論(0)  編輯  收藏 所屬分類: loadrunner性能測試

    <2012年6月>
    272829303112
    3456789
    10111213141516
    17181920212223
    24252627282930
    1234567

    導航

    統計

    常用鏈接

    留言簿(55)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 免费看成人AA片无码视频吃奶| 亚洲一区在线观看视频| 亚洲高清最新av网站| 免费的涩涩视频在线播放| 美女视频黄的全免费视频网站| 五月婷婷综合免费| 美女被免费喷白浆视频| 国产精品入口麻豆免费观看| 日韩免费一区二区三区在线| 成人浮力影院免费看| 精品久久久久成人码免费动漫 | 亚洲人成黄网在线观看| 亚洲日产2021三区| 亚洲一级毛片免费看| 色婷五月综激情亚洲综合| 亚洲va久久久久| 亚洲国产欧美日韩精品一区二区三区| 456亚洲人成在线播放网站| 亚洲欧美日本韩国| 日韩色日韩视频亚洲网站| 全部一级一级毛片免费看| 国产成人自产拍免费视频| a级毛片视频免费观看| 免费A级毛片av无码| 91黑丝国产线观看免费| 热久久精品免费视频| 亚洲精品无码成人片在线观看| 亚洲午夜久久久久久噜噜噜| 亚洲欧洲日产国产综合网| 99999久久久久久亚洲| 国产亚洲精品AAAA片APP| av午夜福利一片免费看久久| 国产成人精品无码免费看| 青青草a免费线观a| 又色又污又黄无遮挡的免费视| 亚洲日韩VA无码中文字幕| 伊人久久综在合线亚洲2019| 亚洲中文字幕无码亚洲成A人片| 日本在线观看免费高清| 一级毛片aaaaaa免费看| 亚洲av无码不卡一区二区三区|