1. 程式人生 > 實用技巧 >Jmeter系列(24)- 詳解 JDBC Request

Jmeter系列(24)- 詳解 JDBC Request

一、前言

  • JDBC Request 主要是向資料庫傳送一個 JDBC 請求(sql 語句),並獲取返回的資料集
  • 它需要和資料庫連線池配置(JDBC Connection Configuration)一起使用,可參考此篇博文:https://www.cnblogs.com/poloyy/p/13182706.html

二、JDBC Request

三、JDBC Request 介面介紹

3.1 欄位含義

欄位 含義
Variable Name Bound to Pool 資料庫連線池配置的名稱
Query Type sql 語句的型別
SQL Query sql 語句
語句結尾不需要新增 ;

變數用 ? 佔位
Parameter values 需要傳遞的變數值,多個變數用 , 分隔
Parameter types 變數型別
Variable Names 儲存sql語句返回的資料和返回資料的總行數用 , 分隔跳過列用空
Result Variable Name 一個 Object 變數儲存所有返回值
Query timeout(s) 超時時間;預設0,代表無限時間
Limit ResultSet 和 limit 類似作用,限制 sql 語句返回結果集的行數
Handle ResultSet 如何定義 callable statements 返回的結果集;預設是儲存為字串

​ 後續通過各種栗子來深入理解常用欄位的含義

四、只有 sql 語句的例子

4.1 JDBC Request

4.2 執行結果

五、引數化的例子

5.1 JDBC Request

5.2 執行結果

5.3 知識點

  • 有幾個問號,Parameter value、Parameter type 填寫 值的數量要保持一致,用,分隔
  • 問號其實是 佔位符,如果學過程式設計的童鞋應該也知道這種寫法,可以 避免 SQL 注入的問題
  • sql 中 使用佔位符 時,Query Type 必須選擇 Prepared Select Statement 或者 Prepared Update Statement
  • 我們可以用 Jmeter 變數去賦值,看下面栗子

六、引數化+變數的例子

6.1 JDBC Request

6.2 執行結果

6.3 知識點

  • 如果在 sql 語句中使用變數,且是字串型別,需要加上引號(前提是變數值沒有加引號),如 '${name}'
  • 如果在 Parameter values 中使用變數,且是字串型別,不需要加上引號,只需要在 Parameter types 裡寫明為 varchar 即可

七、使用 Variable Names 的例子

7.1 結構樹

7.2 JDBC Request

新增一個 Debug Sampler 就知道這個欄位有什麼作用了

7.3 JDBC Request 執行結果

7.4 除錯取樣器執行結果

7.5 知識點

  • mysql:資料庫連線池物件
  • a_#、b_#、c_#、d_#:代表行數
  • a_1:第 1 行、第 1 列
  • b_2:第 2 行、第 2 列
  • c_3:第 3 行、第 3 列
  • d_3:第 3 行、第 4 列
  • 以此類推....
  • 一般如果 HTTP 請求需要用到 sql 查出來的資料的話,就會用到 Variable names 這個欄位

八、使用 Result variable name 的例子

8.1 JDBC Request

8.2 Debug Sampler 執行結果

8.3 知識點

​ 該變數是個陣列,每一個元素代表一條記錄

8.4 重點

​ 關於通過 Variable names、Result variable name 獲取到的值 如何提取,我們將在下一篇文章中詳細講解

九、使用 Limit ResultSet 的例子

9.1 JDBC Request

9.2 執行結果

9.3 知識點

  • Limit ResultSet 是對 sql 語句返回的結果集限制行數
  • limit 10 限制只返回了 10 條資料,然後 Limit ResultSet = 6 限制結果集最終只返回 6 條資料