1. 程式人生 > >引數化之從資料庫提取資料元件詳細解析(十)

引數化之從資料庫提取資料元件詳細解析(十)

1)“配置元件”->“JDBC Connection Configuration”

精簡版:

Variable Name:連線池名稱

Database URL:jdbc:mysql://host:port/db(jdbc:mysql://ip地址:埠號/資料庫名稱)

JDBC Driver class:com.mysql.jdbc.Driver

username:連線資料庫的使用者名稱(如root)

password:連線資料庫的密碼

詳細版:

1.Variable Name:資料庫的型別;

2.MaxNumber of Connection: 資料庫最大連結數;

3.Max Wait(ms):連線等待時長;

4.Time Between Eviction Runs(ms):連線時長;

5.Auto Commet:自動提交;

6.Transaction Isolation: 事務間隔級別設定;

    (1)TRANSACTION_NODE  事務節點 、

    (2)TRANSACTION_READ_UNCOMMITTED事務未提交讀、

    (3)TRANSACTION_READ_COMMITTED事務已提交讀 、

    (4)TRANSACTION_SERIALIZABLE事務序列化 、

    (5)DEFAULT預設、

    (6)TRANSACTION_REPEATABLE_READ事務重複讀、

7.test while idle :連線空閒時是否從連線池中去除;

8.soft min Evictable idle time(ms):檢驗時間間隔;

9.Validation Query:驗證查詢,檢驗連線是否有效(不同資料庫型別不同);

10.JDBCDriver Class: JDBC的類,如org.gjt.mm.mysql.Driver ;

11.Usename,password :使用者名稱密碼;

12.Database URL:資料庫地址(格式:

jdbc:mysql://ipaddress:3306/dbname?characterEncoding=utf-8&autoReconnect=true&rewriteBatchedStatements=true&socketTimeout=30000&connectTimeout=3000)

2) “Sampler”->“JDBC Request”

1)Variable Name:連線池名稱

注意:該值要和JDBC Connection Configuration中配置的Variable Name值對應,否則會提示:No pool found named: 'pool12', ensure Variable Name matches Variable Name of JDBC Connection Configuration;

2)Query Type:預設為Select Statement

含變數的sql查詢,選擇Prepared Select Statement

      a)傳遞的引數值是常量,如圖傳遞2個變數多個變數使用分隔這裡假如你有資料是int型別的,也要在Parameter types 那裡標示為varchar型別,否則無法執行。

     b)傳遞的引數值是變數,使用${變數名}的方式

    C) sql語句是insert 語句,用Callabs Statement

3)Query:輸入sql語句,注意不要加分號

4)Parameter types:變數的型別varchar,如果是int型別,也要寫成varchar

5)Variable names:儲存查詢結果,供後續介面呼叫,注意呼叫時加“_1”

 jmeter官網給的解釋是:如果給這個引數設定了值,它會儲存sql語句返回的資料返回資料的總行數。假如,sql語句返回2行,3列,且variables names設定為A,,C,那麼如下變數會被設定為:

  A_#=2 (總行數)
  A_1=1, 1
  A_2=1, 2 
  C_#=2 (總行數
  C_1=3, 1
  C_2=3, 2

  • 如果返回結果為0,那麼A_#C_#會被設定為0,其它變數不會設定值。
  • 如果第一次返回6行資料,第二次只返回3行資料,那麼第一次那多的3行資料變數會被清除。
  • 可以使用${A_#}${A_1}...來獲取相應的值

解析:

  column1代表第一列所有的資料,column1_#可以獲取到第一列的行數

  column1_n:獲得第一列第n行的資料。

  column2column3的功能類似, 假如我們只需要第一列和第三列的資料,可以寫成column1,,column3,中間的","不可以省略

6)Result Varialbe name:

如果給這個引數設定值,它會建立一個物件變數,儲存所有返回的結果,獲取具體值的方法:columnValue = vars.getObject("resultObject").get(0).get("Column Name")