1. 程式人生 > >Jmeter-JDBC獲取資料庫資料並作為變數傳輸

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

TypeSQL的型別,查詢選擇Select Statement;查詢SQL需傳遞引數選擇Prepared Select Statement;多個查詢語句(不使用引數的情況下)放在一起執行選擇Callable statement;

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)))