Jmeter之JDBC Request使用方法(oracle)

JDBC Request:

  這個sampler可以向數據庫發送一個jdbc請求(sql語句),它經常需要和JDBC Connection Configuration 配置元件一起配合使用。  

目錄:

一、準備工作

二、配置JDBC Connection Configuration

三、配置JDBC Request

四:JDBC Request參數化

五:Variables names參數使用方法

六:Result variable name參數使用方法

七:數據庫驅動類和URL格式

 

一、準備工作:

1、本文使用oracle 數據庫進行測試,數據庫實例名爲ORCL,用戶名密碼爲scoff/******

2、數據庫中有表:DEPT,表中數據如下:

 

3、複製ORACLE的JDBC驅動JAR包文件(我的在:D:\oracle\product\10.2.0\db_1\jdbc\lib\ojdbc14.jar)到JMeter的lib目錄下 

或者

  在Jmeter的Test Plan中引入ojdbc14.jar包

 

二、配置JDBC Connection Configuration:

重要參數說明:

  • Variable Name:數據庫連接池的名稱,我們可以有多個jdbc connection configuration,每個可以起個不同的名稱,在jdbc request中可以通過這個名稱選擇合適的連接池進行使用。
  • Database URL:數據庫url,jdbc:oracle:thin:@host_ip or machine_nameOracle 監聽器監聽的端口Oracle實例的名 (可在oracel安裝目錄下tnsnames.ora文件中找到這些信息)
  • JDBC Driver class:JDBC驅動
  • username:數據庫登陸的用戶名
  • passwrod:數據庫登陸的密碼

三、配置JDBC Request:

1、重要參數說明:

  Variable Name:數據庫連接池的名字,需要與JDBC Connection ConfigurationVariable Name Bound Pool名字保持一致

  Query:填寫的sql語句未尾不要加“;”

  Parameter valus:參數值

  Parameter types:參數類型,可參考:Javadoc for java.sql.Types

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

  Result variable name:創建一個對象變量,保存所有返回的結果

  Query timeout:查詢超時時間

  Handle result set:定義如何處理由callable statements語句返回的結果

2、執行結果:

 

四:JDBC Request參數化:

方法(一): 定義變量,在sql quety中使用變量:

1、在Test plan中定義三個變量(當然也可以使用參數化:Jmeter參數化):

2、在sql query中使用${變量名}的方式引用:

方法(二): 在sql quety中使用“?”作爲佔位符,並傳遞參數值和參數類型,如下圖:

1、傳遞的參數值是常量,如下圖傳遞了3個常量:10,ACCOUNTINGNEW YORK:

2、傳遞的參數值是變量,如下圖中${DNAME}:

 

五:Variables names參數使用方法:

  Jmeter官網給的解釋是:如果給這個參數設置了值,它會保存sql語句返回的數據和返回數據的總行數。假如,sql語句返回2行,3列,且variables names設置爲A,,C,那麼如下變量會被設置爲:

  A_#=2 (總行數)
  A_1=第1列, 第1行
  A_2=第1列, 第2行
  C_#=2 (總行數)
  C_1=第3列, 第1行
  C_2=第3列, 第2行

  • 如果返回結果爲0,那麼A_#和C_#會被設置爲0,其它變量不會設置值。
  • 如果第一次返回6行數據,第二次只返回3行數據,那麼第一次那多的3行數據變量會被清除。
  • 可以使用${A_#}、${A_1}...來獲取相應的值

示例

我們還是用上面的數據庫,把所有數據查出來,DEPT表有有3個字段,4條記錄(忘記了的可以回到第一步那裏查看)

1、添加一個jdbc request名爲select4,添加一個Debug Sampler用來查看輸出的結果,設置 variables name爲a,b,c:

2、執行結果:

 

 

六:Result variable name參數使用方法:

   如果給這個參數設置值,它會創建一個對象變量,保存所有返回的結果,獲取具體值的方法:columnValue = vars.getObject("resultObject").get(0).get("Column Name")

執行結果:

 

七:數據庫驅動類和URL格式:

Datebase

Driver class

Database URL

MySQL

com.mysql.jdbc.Driver

jdbc:mysql://host:port/{dbname}

PostgreSQL

org.postgresql.Driver

jdbc:postgresql:{dbname}

Oracle

oracle.jdbc.driver.OracleDriver

jdbc:oracle:thin:@//host:port/service OR

jdbc:oracle:thin:@(description=(address=(host={mc-name})

(protocol=tcp)(port={port-no}))(connect_data=(sid={sid})))

Ingres (2006)

ingres.jdbc.IngresDriver

jdbc:ingres://host:port/db[;attr=value]

MSSQL

com.microsoft.sqlserver.jdbc.SQLServerDriver

或者

net.sourceforge.jtds.jdbc.Driver

jdbc:sqlserver://IP:port;databaseName=DBname

或者

jdbc:jtds:sqlserver://localhost:1433/"+"library"

 

 

 

 

官網例子(mysql):http://jmeter.apache.org/usermanual/build-db-test-plan.html

關於jmeter中jdbc相關參數的應用: http://f.dataguru.cn/thread-554702-1-1.html

作者:Glen.He
出處:http://www.cnblogs.com/puresoul/



發佈了58 篇原創文章 · 獲贊 6 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章