<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)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产v亚洲v天堂无码网站| 99热在线观看免费| 在线免费观看国产视频| 日韩亚洲国产高清免费视频| 曰批视频免费30分钟成人| 亚洲女人初试黑人巨高清| 最近最新MV在线观看免费高清| 亚洲中文无码av永久| 18禁成年无码免费网站无遮挡| 亚洲人成人网站18禁| 国产中文字幕免费| 久久久久久久久久久免费精品| 亚洲乱码无码永久不卡在线 | 亚洲爱情岛论坛永久| 亚洲精品视频免费在线观看| 亚洲一区二区三区四区视频 | 久久国产一片免费观看| 亚洲人成无码网站| 老汉精品免费AV在线播放| 亚洲欧洲综合在线| 色播在线永久免费视频| 夜夜爽妓女8888视频免费观看| 国产亚洲人成网站在线观看| 久99久精品免费视频热77| 亚洲一区二区无码偷拍| 亚洲精品无码你懂的网站| 最近免费中文字幕MV在线视频3| 亚洲日本香蕉视频观看视频| 青青青青青青久久久免费观看| 亚洲第一视频在线观看免费 | 亚洲av午夜福利精品一区人妖| 国产精品成人观看视频免费| 亚洲国产成人综合精品| 亚洲综合无码精品一区二区三区 | 亚洲午夜国产精品无码老牛影视| 无码人妻久久一区二区三区免费 | 久久精品电影免费动漫| 亚洲最大中文字幕无码网站| 亚洲成A人片77777国产| 四虎在线成人免费网站| 免费国产va在线观看|