jmeter筆記(9)--JDBC Request的使用
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 class:JDBC驅動,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
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的使用