1.?配置(jmeter jdbc connection configuration)
使用對應的數(shù)據(jù)庫需將數(shù)據(jù)庫對應的jar包拷貝到Jmeter\lib\ext,然后重啟Jmeter否則導入的jar包不會生效。
1.1 測試計劃-添加-配置元件-JDBCConnection Configuration
1.2 配置
1.2.1?mysql配置

若要sqlQuery需要查詢多個sql時Database,URL后面需要拼接allowMultiQueries=true,見下圖

1.2.2 oracle配置

1.2.3 sqlServer配置

可以參考:https://blog.csdn.net/sunwangdian/article/details/50737270
1.2.4 MongoDB配置
請參考:https://www.cnblogs.com/yangxia-test/p/4023905.html
2.操作(JDBC PreProcessor)

2.1?Sampler> JDBC Request
Sampler可以向數(shù)據(jù)庫發(fā)送一個jdbc請求(sql語句),并獲取返回的數(shù)據(jù)庫數(shù)據(jù)進行操作。需要與JDBC Connection Configuration配置原件(配置數(shù)據(jù)庫連接的相關屬性,如連接名、密碼等)一起使用。
?? JDBC Request的Variable Name(連接池的變量名稱)要與JDBC
Connection Configuration的Variable Name保持一致;否則連接DB失敗。
2.1.1?QueryType選擇
1)Select Statement:執(zhí)行第一條查詢語句。
2)Updata Statement:執(zhí)行第一條更新語句,包括(insert,updata,delete)。
3)Callable Statement:執(zhí)行多條sql語句。
4) Prepared Select Statement:執(zhí)行一條帶參數(shù)的查詢語句。
5) Prepared Updata Statement:執(zhí)行一條帶參數(shù)的更新語句,包括(insert,updata)。
6) Commit:將未存儲的sql語句結果寫入數(shù)據(jù)庫表。
7) Rollback:撤銷指定sql語句的過程。
8) AutoCommit(true):無論何種情況,都自動提交將結果寫入,結束當前事務開始下一個事務。
2.1.2 JDBC Request 參數(shù)說明:
1) Parameter values:參數(shù)值
2)Parameter types:參數(shù)類型

3) Variable names:保存sql語句返回結果的變量名

?使用方法請參考:https://blog.csdn.net/foreverlemon/article/details/73792775
4) Result variable name:創(chuàng)建一個對象變量,保存所有返回的結果

使用方法請參考:https://www.cnblogs.com/licl11092/p/6862010.html
5) Query timeout:查詢超時時間
6) Handle result set:定義如何處理由callable statements語句返回的結果
2.1.3 Sql query與參數(shù)說明使用參數(shù);
在JDBC Request的input框中都可以使用參數(shù),參數(shù)引用方式${test}。

2.2?前置處理器>JDBC PreProcessor/后置處理器>JDBC PostProcessor
JDBC PreProcessor在sampler?執(zhí)行前操作數(shù)據(jù)庫,JDBC PostProcessor在sampler?執(zhí)行后操作數(shù)據(jù)庫;與JDBC Request作用范圍不一樣,其它使用方法都相同。
3.??獲取DB查詢結果
3.1?Variable names方式獲取
3.1.1?Variable?names的配置

3.1.2?結果獲取

1)采用變量的方式引用,引用方法${a_1}表示引用a列的第一條記錄,${a_#}表是查詢結果的總數(shù)量;
2)在BeanShell中處理
在BeanShell中獲取變更指定值與總數(shù)量;
String a = vars.get("a_#"),表示獲取總數(shù)量;
String a1 = vars.get("a_1"),表示獲取指定值;
3.2?Result variable name方式獲取
3.2.1?Result?variable name配置

3.2.2?結果獲取

//======Result variable name===
//獲取counts
intcounts = vars.getObject("resultObject").size();
//將結果值返回給指定變量
varafResult = vars.getObject("resultObject");
//獲取第1行,uuid的值默認從0開始
varuuid1=afResult.get(0).get("uuid").toString();
//將獲取的結果put給jmeter,用于sampler,斷言調用參數(shù);
vars.put("appBuildHistoryId",uuid1+"");
log.info("===counts:====???"+counts+"???====appBuildHistoryId:??"+uuid1);
4.?接口參數(shù)與斷言引用DB查詢結果數(shù)據(jù);
4.1?使用范圍
sampler?與斷言中都可以使用,作用域與元件作用域及執(zhí)行順序有關系。
注:可以把思維發(fā)散一下,將put給jmeter的參數(shù)都可以理解為一個變量,同Jmeter獲取變理的方式一樣處理,除了受作用域及執(zhí)行順序影響其它都相同。
4.2 引用實例
1)在sampler參數(shù)中引用

2)在sampler請求中使用

3)在beanshell中使用
