JDBC Request
JDBC Request(与数据库交互的请求类型)——用于向数据库发送一个jdbc请求(请求实际上就是sql语句)并获取返回数据库执行SQL结果数据进行操作。
它经常需要和JDBC Connection Configuration配置原件(JDBC Connection Configuration:即为配置数据库连接的相关属性,如连接名、密码等)一起使用。
一、使用前准备工作
1.数据库环境要求
准备好能够连接的mysql数据库,且数据库中有正常访问的表信息
数据库开通了其它机器远程访问的权限
命令为:
grant all privileges on . to mysqlusername@"%" identified by ‘mysqlpwd’;(mysqlusername设置MYSQL用户名,MYSQL的密码mysqlpwd)
flush privileges;
2.Jmeter添加需要的驱动jar包
方式1:使用不同的数据库,我们需要引入不同的jar包。直接将jar包(MYSQLmysql-connector-java-5.1.37.jar包的复制到jmeter的lib目录)
mysql数据库:无需引入其他数据库驱动jar包。
sql server 数据库:下载sqljdbc4.jar 放到 jmeter根目录的lib目录下(??待验证)
oracle数据库:将oracle数据的安装目录下面的\product\10.2.0\db_1\jdbc\lib\ojdbc14.jar 放到jmeter根目录下的lib目录下(??待验证)
方式2:通过Test Plan(不常用)
假如我们不使用将jar复制到jmeter的lib目录的方式,我们还可以使用Jmeter的Test Plan引入相应的jar包,如下面引入mysql数据库的jar包
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TPB90dNpXT6VleNBDOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL1MDO2ADNygTM0ATMwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
二、配置JDBC Connection Configuration
重要参数说明
Variable Name:数据库连接池的名称,我们可以有多个jdbc connection configuration,每个可以起个不同的名称,在jdbc request中可以通过这个名称选择合适的连接池进行使用。
Database URL:数据库url,jdbc:mysql://主机ip或者机器名称:mysql监听的端口号/数据库名称, 如:jdbc:mysql://localhost:3306/test
JDBC Driver class:JDBC驱动
username:数据库登陆的用户名
passwrod:数据库登陆的密码
不同数据库具体的填写方式,可以参考下面的表格:
Database Driver class Database URL
MySQL com.mysql.jdbc.Driver jdbc:mysql://host:port/{dbname}
PostgreSQL org.postgresql.Driver jdbc:postgresql:{dbname}
Oracle oracle.jdbc.driver.OracleDriver jdbc:oracle:thin:user/pass@//host:port/service
Ingres (2006) ingres.jdbc.IngresDriver jdbc:ingres://host:port/db[;attr=value]
MSSQL com.microsoft.sqlserver.jdbc.SQLServerDriver或者net.sourceforge.jtds.jdbc.Driver jdbc:sqlserver://IP:1433;databaseName=DBname或者jdbc:jtds:sqlserver://localhost:1433/"+“library”
三、配置JDBC Request
Variable Name:数据库连接池的名字,需要与JDBC Connection Configuration的Variable Name Bound Pool名字保持一致
Query:填写的sql语句
Parameter valus:参数值
Parameter types:参数类型,可参考:Javadoc for java.sql.Types
Variable names:保存sql语句返回结果的变量名
Result variable name:创建一个对象变量,保存所有返回的结果
Query timeout:查询超时时间
Handle result set:定义如何处理由callable statements语句返回的结果
四、JDBC Request参数化
(1)SQL中引用变量方式
(2)SQL中占用符,并传递参数值和参数类型
五、Variables names 参数使用方法
jmeter官网给的解释是:如果给这个参数设置了值,它会保存sql语句返回的数据和返回数据的总行数。假如,sql语句返回5行,2列,且variables names设置为username,pwd,那么如下变量会被设置为:
SQL语句为:select LOGIN_ID,PASSWORD from XXX where =1
username_#=2 (总行数)
username_1=第1列, 第1行
username_2=第1列, 第2行
username_3=第1列, 第3行
username_4=第1列, 第4行
username_5=第1列, 第5行
pwd_#=2 (总行数)
pwd_1=第2列, 第1行
pwd_2=第2列, 第2行
pwd_3=第2列, 第3行
pwd_4=第2列, 第4行
pwd_5=第2列, 第5行
KaTeX parse error: Expected group after '_' at position 2: {_̲_V(username_{__counter(False,)})}
KaTeX parse error: Expected group after '_' at position 2: {_̲_V(pwd_{__counter(False,)})}