<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天堂中文字幕| 国产亚洲成人在线播放va| 四虎最新永久免费视频| 边摸边脱吃奶边高潮视频免费| 亚洲一区免费观看| 国产免费人视频在线观看免费| 桃子视频在线观看高清免费视频| 亚洲日本VA中文字幕久久道具| 亚洲国产精品成人精品无码区在线| 在线A级毛片无码免费真人| 久久国产乱子精品免费女| 国产亚洲午夜精品| 亚洲午夜精品在线| 亚洲精品国产成人片| 国产精品免费视频网站| 四虎国产精品免费久久| 7x7x7x免费在线观看| 日韩精品无码免费专区午夜不卡| 色屁屁在线观看视频免费| 亚洲中文字幕乱码一区| 亚洲电影唐人社一区二区| 亚洲伊人久久精品影院| 亚洲裸男gv网站| 亚洲AV无码专区日韩| 无码欧精品亚洲日韩一区夜夜嗨| 国产啪精品视频网免费| 久视频精品免费观看99| 天天影院成人免费观看| 久草在视频免费福利| 久久99九九国产免费看小说| 国产免费久久精品99re丫y| 成年性羞羞视频免费观看无限| 午夜免费不卡毛片完整版| 久久久久久久久免费看无码| 亚洲成在人线aⅴ免费毛片| 毛片a级毛片免费播放下载| 青青青国产免费一夜七次郎|