對數據庫的查詢操作步驟詳解
更新時間:2021年06月16日 10:23:13 作者:繁華似錦
這篇文章主要詳細說明,使用JDBC 組件,如何對數據庫進行查詢的各種操作,重點是中查詢語句的操作步驟,通過實例代碼講解,需要的朋友可以參考下
提示:
關于如何連接MySQL數據庫,前面文章已經詳解的講解過了。因為配置數據庫連接是比較固定的步驟,這里就不重復講解了。
本篇文章主要詳細說明,使用JDBC 組件,如何對數據庫進行查詢的各種操作。
中查詢語句的操作步驟:
1、使用“用戶自定義變量”實現參數化
即:在SQL Query使用參數化變量。
在中,有兩個地方可以設置“用戶自定義變量”。
一種是“測試計劃”界面中設置“用戶自定義變量”。
一種是添加配置元件中的“用戶自定義變量”。
我們以“測試計劃”為例。如下圖:
(1)在“測試計劃”界面中設置“用戶自定義變量”。
我們添加了一個自定義變量用戶ID,如下圖:
(2)在JDBC 界面的SQL Query中,使用${變量名}的方式進行引用。
我們在Varíable Name填寫對應的數據庫配置名稱,與JDBC 組件中的Varíable Name對應。Query Type:選擇 ,因為我們只進行一條查詢的SQL語句。編寫SQL語句,并使用${變量名}方式引用參數化變量。
如下圖所示:
2、 在SQL Query中使用占位符傳遞參數
傳遞的參數值有常量和變量之分。
(1)傳遞的參數值是常量
傳遞2個常量:用戶ID=3,用戶名=孫悟空。
需要注意:
如果我們需要發送帶有占位符的SQL語句,Query Type:需要選擇 。 參數值和 types參數類型,都必須要填寫(參數類型與表設計結構中的類型一致即可)。如果有多個占位符,就需要有多組數據jmeter數據庫查詢結果,之間用逗號分隔。發送SQL請求時,第一個參數會自動賦值給第一個占位符,以此類推,注意參數的編寫順序。
如下圖所示:
(2)傳遞的參數值是變量
也就是占位符所接收的參數是一個參數化變量。我們把對應常量的位置,變成參數化變量即可,其他同上。
如下圖所示:
各種形式的參數化可以這樣使用。關于參數化相關知識,前面文章有詳細說明。
3、 names參數的使用方法
names參數的作用是,把SQL語句查詢出來的數據保存到變量中。一般查詢返回幾個字段,就用幾個變量來進行接收,不同的變量之間用逗號隔開。
官網給的解釋是:如果給這個參數設置了值,它會保存SQL語句返回的數據和返回數據的總行數。
假如,SQL語句返回2行,3列的數據,且 names中設置為A,B,C,那么如下變量會被設置為:
A_#=2# A列的總行數
A_1=3# A列的第一個數據,也就是第1列, 第1行的數據
A_2=4# A列的第二個數據,也就是第1列, 第2行的數據
B_#=2# B列的總行數
B_1= # B列的第一個數據,也就是第2列, 第1行的數據
B_2= # B列的第二個數據,也就是第2列, 第2行的數據
C_#=2# C列的總行數
C_1=孫悟空# C列的第一個數據jmeter數據庫查詢結果,也就是第3列, 第1行的數據
C_2=豬八戒# C列的第二個數據,也就是第3列, 第2行的數據
說明:
如果返回結果為0,那么A_#和C_#會被設置為0,其它變量不會設置值。
如果第一次請求返回6行數據,第二次請求只返回3行數據,那么第一次那多的3行數據,在線程變量中會被清除。
可以使用${A_#}、${A_1}來獲取相應的值,作為參數化數據進行傳遞。
可以添加Debug 組件,來查看參數是否獲取到了。
示例:
(1)JDBC 組件界面內容
在 names中定義接收數據的變量名,多個變量名之間用逗號分隔。
如下圖所示:
(2)查看結果
添加一個取樣器Debug 用來查看輸出的結果。(Debug 組件可以查看到腳本運行中所有的變量)
JDBC 請求結果,如下圖所示:
查看Debug 中的輸出結果,如下圖所示:
我們從上圖中可以看到,把從數據庫中查詢出來的數據,存儲在線程變量中了。
提示:
A代表第一列所有的數據,A_#可以獲取到第一列的行數。A_n可以獲得第一列第n行的數據。B和C的功能類似, 假如我們只需要第一列和第三列的數據,可以寫成A,,C,中間的,不可以省略。
4、 name參數使用方法
如果給這個參數設置值,它會創建一個對象變量,保存所有返回的結果。
示例:
(1)JDBC 組件界面內容
在 name中定義接收數據的變量名。
如下圖所示:
(2)查看結果
添加一個取樣器Debug 用來查看輸出的結果。(Debug 組件可以查看到腳本運行中所有的變量)
JDBC 請求結果,如下圖所示:
查看Debug 中的輸出結果,如下圖所示:
(3)數據處理
上面查看到的結果集,我們如何應用里面的數據呢?
我們可以創建一個取樣器,也可以在JDBC 取樣器下一級添加后置處理器 組件。
在里邊編寫如下代碼,來獲取需要的指定數據,提供給后面的接口請求使用。
對象中具體數據的獲取方法: = vars.("").get(0).get(" Name")
5、總結:
以上我們就把 、 types、 names、 name的使用方式進行了說明。
在日常工作中,可以舉一反三,靈活使用。
6、注意事項:
(1)The time zone value服務器時區異常
如果報錯,如下:
ctory (The time zone value '?????????????????' is or more than one time zone. You must the or JDBC (via the ) to use a more time zone value if you want to time zone .)
解決方法:數據庫連接URL后面加 =GMT或=GMT%2B8,即可解決。
(2)執行多條SQL語句
執行多條SQL語句時,查詢語句和、語句不能在同一個JDBC 組件中執行。
當執行多條SQL 語句時,每條語句后面加;。
并且在 URL 后增加一個參數=true,否則將不能夠執行多條語句,報錯。
(3)更新操作中文亂碼
需要在 URL 后增加一個參數=utf-8,這樣就可以解決更新操作時候的中文亂碼了。
提示:一定要設置為UTF-8編碼嗎?不一定,要跟你的數據庫的編碼保持一致,就不會中文亂碼了。
(4) URL添加參數規則
URL后增加參數,在后加?,如有多個參數,每個參數用&隔開,如:
jdbc:mysql://127.0.0.1:3306/guest?=GMT&=true&=utf-8&=true
參考:
以上就是對數據庫的查詢操作 的詳細內容,更多關于數據庫操作 的資料請關注腳本之家其它相關文章!