jmeter4.0實現JDBC請求


2018-10-09

 具體jmeter配置,參考此篇文章,比較詳細

 https://www.cnblogs.com/wolfshining/p/7516681.html

 驅動下載地址:http://www.java2s.com/Code/Jar/c/Downloadcloudmysqlconnectorjava517binjar.htm

 

總結思路:

要顯示JDBC請求,首先了解什么是JDBC(百度百科:JDBC(Java DataBase Connectivity,java數據庫連接)是一種用於執行SQL語句的Java API,可以為多種關系數據庫提供統一訪問,它由一組用Java語言編寫的類和接口組成。)

要連接上數據庫,基本的配置包含並如下圖所示

數據庫的IP(IP地址)、端口號(默認3306)、jmeter連接mysql數據庫的驅動(cloud-mysql-connector-java-5.1.7-bin.jar)、庫名、表名

JDBC.Driver.class :      com.mysql.jdbc.Driver     (mysql 固定寫法  如果是oracle,則此處的class 要修改)

 

 

 

mysql驅動導入

 

 

JDBC Connection  Configuration

 JDBC  request 

 

 

 

 

 

 

遇到的問題:

Can not issue data manipulation statements with executeQuery().

百度搜索之后,發現是 Query  Type的問題。

以下對幾種查詢類型做以說明:

來源:https://www.cnblogs.com/imyalost/p/6498029.html

1、Select statement

這是一個查詢語句類型;如果JDBC Request中的Query內容為一條查詢語句,則選擇這種類型。

PS:多個查詢語句(不使用參數的情況下)可以放在一起順序執行,需要設置Query Type為:Callable Statement;

    如果Query Type為:select Statement,則只執行第一條select語句。

 

2、Update statement

這是一個更新語句類型(包含insert和update);如果JDBC Request中的Query內容為一條更新語句,則選擇這種類型。

PS:如果該類型下寫入多條update語句,依然只執行第一條(原因同上,具體下面介紹)。

 

3、Callable statement

這是一個可調用語句類型,CallableStatement 為所有的 DBMS 提供了一種以標准形式調用已儲存過程的方法。

已儲存過程儲存在數據庫中,對已儲存過程的調用是 CallableStatement 對象所含的內容。

這種調用是用一種換碼語法來寫的,有兩種形式:一種形式帶結果參數,另一種形式不帶結果參數;結果參數是一種輸出 (OUT) 參數,是已儲存過程的返回值。

兩種形式都可帶有數量可變的輸入(IN 參數)、輸出(OUT 參數)或輸入和輸出(INOUT 參數)的參數,問號將用作參數的占位符。 

在 JDBC 中調用已儲存過程的語法如下所示。注意,方括號表示其間的內容是可選項;方括號本身並不是語法的組成部份。 

{call 過程名[(?, ?, ...)]},返回結果參數的過程的語法為: {? = call 過程名[(?, ?, ...)]};

不帶參數的已儲存過程的語法類似:{call 過程名}。

更詳細的使用方法可參考這篇文章:http://blog.csdn.net/imust_can/article/details/6989954

 

4、Prepared select statement

statement用於為一條SQL語句生成執行計划(這也是為什么select statement只會執行第一條select語句的原因),如果只執行一次SQL語句,statement是最好的類型;

Prepared statement用於綁定變量重用執行計划,對於多次執行的SQL語句,Prepared statement無疑是最好的類型(生成執行計划極為消耗資源,兩種實現速度差距可能成百上千倍);

PS:PreparedStatement的第一次執行消耗是很高的. 它的性能體現在后面的重復執行。

更詳細的解釋請參考這一篇文章:http://blog.csdn.net/jiangwei0910410003/article/details/26143977

 

5、Prepared update statement

Prepared update statement和Prepared select statement的用法是極為相似的,具體可以參照第四種類型。

 

6、Commit

commit的意思是:將未存儲的SQL語句結果寫入數據庫表;而在jmeter的JDBC請求中,同樣可以根據具體使用情況,選擇這種Query類型。

 

7、Rollback

rollback指的是:撤銷指定SQL語句的過程;在jmeter的JDBC請求中,同樣可以根據需要使用這種類型。

 

8、AutoCommit(false)

MySQL默認操作模式就是autocommit自動提交模式。表示除非顯式地開始一個事務,否則每條SQL語句都被當做一個單獨的事務自動執行;

我們可以通過設置autocommit的值改變是否是自動提交autocommit模式;

而AutoCommit(false)的意思是AutoCommit(假),即將用戶操作一直處於某個事務中,直到執行一條commit提交或rollback語句才會結束當前事務重新開始一個新的事務。

 

9、AutoCommit(true)

這個選項的作用和上面一項作用相反,即:無論何種情況,都自動提交將結果寫入,結束當前事務開始下一個事務。

 

10、編輯(${})

jmeter中的JDBC請求中的SQL語句是無法使用參數的,比如: SELECT * FROM ${table_name} 是無效的。

如果需實現同時多個不同用戶使用不同的SQL,可以通過把整條SQL語句參數化來實現;(把SQL語句放在csv文件中,然后在JDBC Request的Query 中使用參數代替 ${SQL_Statement})

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM