1. 程式人生 > >jmeter筆記(9)--JDBC Request的使用

jmeter筆記(9)--JDBC Request的使用

保存 保持 present nec not 定義 jar包 ase 連接失敗

JDBC Request可以向數據庫發送一個JDBC(Java Data Base Connectivity)請求(sql語句),獲取返回的數據庫數據進行操作。它需要和JDBC Connection Configuration配置元件一起使用,本次筆記記錄JDBC測試MySQL數據庫的相關操作。

JDBC Request

1、添加需要的驅動jar包

使用不同的數據庫,我們需要引入不同的jar包,驅動包的版本一定要與你數據庫的版本匹配,驅動版本低於mysql版本有可能會導致連接失敗報錯),我這裏用的是mysql-connector-java-5.1.45.jar

添加方式1:直接將jar包復制到jmeter的lib目錄,重啟生效;

添加方式2:使用Jmeter的Test Plan(測試計劃)引入相應的jar包。

技術分享圖片

2、添加配置元件JDBC Connection Configuration

技術分享圖片

3、填寫配置信息

技術分享圖片

參數說明:

  • Variable Name:數據庫連接池的名稱,我們可以有多個jdbc connection configuration,每個可以起個不同的名稱,在jdbc request中可以通過這個名稱選擇合適的連接池進行使用。

  • Database URL:數據庫url,jdbc:mysql://主機ip或者機器名稱:mysql監聽的端口號/數據庫名稱, 如:jdbc:mysql://192.168.1.33:3306//test

  • JDBC Driver classJDBC驅動,MySQL的驅動為:com.mysql.jdbc.Driver

  • username:數據庫登陸的用戶名

  • passwrod:數據庫登陸的密碼

4、新建JDBC Request

技術分享圖片

技術分享圖片

參數說明:

Variable Name:數據庫連接池的名字,需要與JDBC Connection Configuration的Variable Name 名字保持一致 ;
Query:填寫的sql語句未尾不要加“;”
Parameter valus:參數值
Parameter types:參數類型,可參考:Javadoc for java.sql.Types

Variable names:保存sql語句返回結果的變量名
Result variable name:創建一個對象變量,保存所有返回的結果
Query timeout:查詢超時時間
Handle result set:定義如何處理由callable statements語句返回的結果

執行結果如下:
技術分享圖片

5、常見錯誤處理

如果出現報錯:“java.sql.SQLException: Value ‘0000-00-00‘ can not be represented as java.sql.Timestamp”

可能是因為“0000-00-00 00:00:00”在mysql中是作為一個特殊值存在的,但 java.sql.Date 將其視為不合法的值格式不正確,這才是報錯的原因

解決方式:給jdbc url加上zeroDateTimeBehavior=convertToNull

zeroDateTimeBehavior=round是為了指定MySql中的DateTime字段默認值查詢時的處理方式;默認是拋出異常

對於值為0000-00-00 00:00:00(默認值)的紀錄,如下兩種配置,會返回不同的結果:
zeroDateTimeBehavior=round 0001-01-01:00:00:00.0
zeroDateTimeBehavior=convertToNull:null

6、參數化

數據庫測試過程中很多時候需要對內容進行參數化,比如向數據庫插入一些數據,但是插入的數據都有唯一性,這時需要我們對insert 語句參數化,jmeter JDBC請求的參數化跟其他請求的參數化方式一樣,方法可參考前面的參數化筆記。

jmeter筆記(9)--JDBC Request的使用