Jmeter系列(24)- 詳解 JDBC Request
阿新 • • 發佈:2020-12-23
一、前言
- 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 條資料