關於Jmeter中JDBC相關引數的應用

2021-08-10 18:38:33 字數 4902 閱讀 5386

一.資料庫驅動類和url格式:

database

driver class

database url

mysql

com.mysql.jdbc.driver

jdbc:mysql://host[:port]/dbname

postgresql

org.postgresql.driver

jdbc:postgresql:

oracle

oracle.jdbc.oracledriver

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

jdbc:oracle:thin:@(description=(address=(host=)(protocol=tcp)(port=))(connect_data=(sid=)))

ingres (2006)

ingres.jdbc.ingresdriver

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

sql server (ms jdbc driver)

com.microsoft.sqlserver.jdbc.sqlserverdriver

jdbc:sqlserver://host:port;databasename=dbname

apache derby

org.apache.derby.jdbc.clientdriver

jdbc:derby://server[:port]/databasename[;urlattributes=value[;...]]

注:僅供參考

二.相關引數

1.variable name

其中的variable name和上面jdbc connection configuration中的variable name相同,這裡表示jdbc connection configuration 建立乙個名為pubpool的連線池,之後其他jdbc request 都共用這個連線池。

2.sql query

(1)query type

*** statement需要填寫的sql是一句完整可執行的sql,而prepared *** statement允許使用者在sql中使用?,?然後再parameter values和parameter types中填寫引數和型別,最終執行時替代sql中的?,形成一句完整的sql語句。

select statement:

##待驗證,網上找的例子:

如果sql語句中需要使用引數變數,那麼query type 需要設定為select statement ,需要先新增random variable,然後在parameter values中輸入$,$;

在paramter types中輸入變數的資料型別。 如下圖示:

中間用逗號分隔。只能執行第乙個sql語句。

update statement: 對於insert、update、delete語句,需要設定query type為:update statament.資料修改語句中可以使用引數,而且可以順序執行多個修改語句。

egg:

callable statement:

##待驗證:

多個查詢語句(不使用引數的情況下)可以放在一起順序執行,需要設定query type為callable statement,然後順序輸入select語句,不用加go或者分號。如果query type設定為:select statement的話,只執行第乙個sql語句。

prepared select statement:

prepared update statement:

commit:

把jdbc connection configuration中的自動提交為false,執行更改,增加或刪除操作後,查詢資料並無更改,再新增乙個jdbc request,設定其query type為commit,再次查詢,之前的操作生效。

rollback:

把jdbc connection configuration中的自動提交為false,執行更改,增加或刪除操作後,查詢資料並無更改(相當於編輯沒儲存), 再新增乙個jdbc request,設定其query type為rollback(相當於編輯後撤銷),再次查詢,仍然沒有更改。

如果把jdbc connection configuration中的自動提交為true,執行更改,增加或刪除操作後,查詢資料更改,但一旦事物被提交就無法rollback。

autocommit(false)和autocommit(true):

把jdbc connection configuration中的自動提交為true或false,是設定系統引數的預設值。新增乙個jdbc request,設定其query type autocommit為true或false後(相當於修改系統引數),再進行對資料庫的增加、刪除、修改操作。

edit:必須是對上述之一的結果的引用, 為使用正規表示式的操作。

(2)parameter values:表示我們要新增的資料,需要不同資料新增可以使用引數化

parameter types為上面需要輸入資料的型別,與上面的一一對應

parameter values和parameter types:成對出現,且sql語句中有多少個?,這裡就必須有多少對引數鍵值對,假設sql語句為select * from zmyw_user where id=?,那麼可以設定parameter values為$,parameter types為varchar

(3)variable names:變數名稱,為資料庫的欄位名稱,有多個字段返回時,可以使用逗號隔開,用於存放select操作返回的查詢結果

result variable name:用於存放select操作返回的查詢結果集。

3.擴充套件:

(1) 當選擇了"prepared select statement"、」prepared update statement "callable statement"的型別時,每個連線的語句快取使用 jdbc 請求。在預設情況下將儲存每個連線高達 100 prepared statements,這可能會影響您的資料庫 (開啟的游標)。這可以通過定義"jdbc sampler.nullmarker"屬性更改。

(1)query type為select statement時,對應執行**為:stmt = conn.createstatement();

resultset rs = null;

rs = stmt.executequery(sql);

return getstringfromresultset(rs).getbytes(encoding);

(2)query type為callable statement時,對應執行**為:callablestatement cstmt = getcallablestatement(conn);

int out=setarguments(cstmt);

boolean hasresultset = cstmt.execute();

string sb = resultsetstostring(cstmt,hasresultset, out);

return sb.getbytes(encoding);

(3)query type為update statement時,對應執行**為:stmt = conn.createstatement();

stmt.executeupdate(sql);

int updatecount = stmt.getupdatecount();

string results = updatecount + " updates";

return results.getbytes(encoding);

(4)query type為prepared select statement時,對應執行**為:preparedstatement pstmt = getpreparedstatement(conn);

setarguments(pstmt);

resultset rs = null;

rs = pstmt.executequery();

return getstringfromresultset(rs).getbytes(encoding);

(5)query type為prepared update statement時,對應執行**為:

preparedstatement pstmt = getpreparedstatement(conn);

setarguments(pstmt);

pstmt.executeupdate();

string sb = resultsetstostring(pstmt,false,null);

return sb.getbytes(encoding);

(6)query type為rollback時,對應執行**為:

conn.rollback();

return rollback.getbytes(encoding);

(7)query type為commit時,對應執行**為:

conn.commit();

return commit.getbytes(encoding);

(8)query type為autocommit(false)時,對應執行**為:conn.setautocommit(false);

return autocommit_false.getbytes(encoding);

(9)query type為autocommit(true)時,對應執行**為:

conn.setautocommit(true);

return autocommit_true.getbytes(encoding);

(10)其它情況直接拋異常:throw new unsupportedoperationexception("unexpected query type: "+_querytype);

jmeter通過mysql傳送jdbc請求

3 jmeter工具安裝完畢並可以順利使用。1 開啟jmeter,並在測試計畫中新增jar包 2 新增 jbdc鏈結配置 jdbc connection configuration 新增執行緒組右擊 新增 add 配置元件 config element jdbc connection configu...

JDBC相關API簡介

drivermanager,可以稱之為驅動管理類。主要作用 1 註冊驅動 實際開發中,不會使用 drivermanager.registerdriver new driver 的方式來註冊,因為driver類中存在靜態 塊,已經執行了這一步驟,這會導致驅動註冊兩次。通常使用 class.fornam...

關於jdbc連線

1 載入jdbc驅動,載入mysql的驅動類 class.forname com.mysql.jdbc.driver 2 提供jdbc連線的url jdbc mysql localhost 3306 test?useunicode true characterencoding gbk 3 建立資料庫...