Jmeter-JDBC獲取資料庫資料並作為變數傳輸
版權宣告:本文為博主原創文章,未經博主允許不得轉載。https://blog.csdn.net/kangi/article/details/81670796
一、新增資料庫對應引入的jar包:
oracle:oracle資料安裝目錄下\product\12.1.0\client_1\jdbc\lib\ojdbc8.jar;
mysql:mysql-connector-java-5.1.46-bin.jar;
sql server:sqljdbc.jar ;
新增jar包有兩種方式 :
1.(推薦)將jar包複製到jmeter的lib目錄 ;
2.Test Plan引入jar包,如圖:
二、Jmeter配置
1、配置JDBC Connection Configuration(例:oracle)
執行緒組右鍵-“新增--配置元件--JDBC Connection Configuration”
引數:
1)Variable Name: 資料庫連線池的名稱(可以多個),與jdbc request中Variable Name保持一致;
2)Validation Query :選擇select 1 from dual;
3)Database URL:jdbc:oracle:thin:@資料庫連線串(資料庫IP:1521:資料庫ID 未成功);
4)JDBC Driver class:oracle.jdbc.driver.OracleDriver 資料庫驅動程式;
5)Username:資料庫使用者名稱;
6)Password:對應的資料庫使用者密碼;
三、配置JDBC Request
執行緒組右鍵-“新增--Sampler--JDBC Request”
引數:
Variable Name: 資料庫連線池名稱,與JDBC Connection Configuration中Variable Name Bound Pool的Variable Name一致 ;
Query
Query:SQL後不要新增分號“;” ;
Parameter valus:引數值 ;
Parameter types:引數化對應的資料型別,可參考:Javadoc for java.sql.Types
Variable names:sql語句返回結果的變數名 ;
Result variable name:建立一個物件變數,儲存所有返回的結果 ;
Query timeout:查詢超時時間 ;
Handle result set:定義如何處理由callable statements語句返回的結果;
使用jdbc request的結果作為引數時,要寫成${user_1}這樣子,1代表你查出來的資料第一行,想取第幾行就把1改成對應數值;
四、配置計數器
執行緒組右鍵-“新增--配置元件--計數器”
index就是我們設定的計數器的變數名,可以直接用他來代替我們的數字1,2,3,等等,現在把username和index兩個變數拼接起來,拼接後的username變數應該是${__V(user_${index})}
通過函式助手獲取巢狀函式
五、檢視結果
如果需多次呼叫重複資料,需配置迴圈控制器;
6、迴圈控制器
執行緒組右鍵-“新增--邏輯控制器--迴圈控制器”
錯誤分析:
1.Cannot create PoolableConnectionFactory ;
jmeter未引入(或jar版本不匹配)jar包(3.3 用 ojdbc8.jar);
2.Cannot create PoolableConnectionFactory (Listener refused the connection with the following error: ORA-12505, TNS:listener does not currently know of SID given in connect descriptor )
Cannot create JDBC driver of class 'oracle.jdbc.OracleDriver' for connect URL '
database :URL(資料庫連線池)寫錯了;
例:jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = URL)(PORT = 埠))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = name)))