Jmeter-JDBC获取数据库数据并作为变量传输

 

版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.csdn.net/kangi/article/details/81670796

一、添加数据库对应引入的jar包:

oracle:oracle数据安装目录下\product\12.1.0\client_1\jdbc\lib\ojdbc8.jar;
mysql:mysql-connector-java-5.1.46-bin.jar; 
sql server:sqljdbc.jar ;

添加jar包有两种方式 :
1.(推荐)将jar包复制到jmeter的lib目录 ;
2.Test Plan引入jar包,如图: 

二、Jmeter配置 

1、配置JDBC Connection Configuration(例:oracle)

  线程组右键-“添加--配置元件--JDBC Connection Configuration”

参数:

1)Variable Name: 数据库连接池的名称(可以多个),与jdbc request中Variable Name保持一致;

2)Validation Query :选择select 1 from dual;

扫描二维码关注公众号,回复: 4390608 查看本文章

3)Database URL:jdbc:oracle:thin:@数据库连接串(数据库IP:1521:数据库ID  未成功);

4)JDBC Driver class:oracle.jdbc.driver.OracleDriver   数据库驱动程序;

5)Username:数据库用户名;

6)Password:对应的数据库用户密码;

三、配置JDBC Request

    线程组右键-“添加--Sampler--JDBC Request”

   参数:

Variable Name: 数据库连接池名称,与JDBC Connection Configuration中Variable Name Bound Pool的Variable Name一致 ;
Query TypeSQL的类型,查询选择Select Statement;查询SQL需传递参数选择Prepared Select Statement;多个查询语句(不使用参数的情况下)放在一起执行选择Callable statement;

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的结果作为参数时,要写成${user_1}这样子,1代表你查出来的数据第一行,想取第几行就把1改成对应数值;

四、配置计数器

    线程组右键-“添加--配置元件--计数器”

index就是我们设置的计数器的变量名,可以直接用他来代替我们的数字1,2,3,等等,现在把username和index两个变量拼接起来,拼接后的username变量应该是${__V(user_${index})}

通过函数助手获取嵌套函数

五、查看结果

如果需多次调用重复数据,需配置循环控制器;

6、循环控制器

    线程组右键-“添加--逻辑控制器--循环控制器”

错误分析:

1.Cannot create PoolableConnectionFactory ;

jmeter未引入(或jar版本不匹配)jar包(3.3 用 ojdbc8.jar);


2.Cannot create PoolableConnectionFactory (Listener refused the connection with the following error: ORA-12505, TNS:listener does not currently know of SID given in connect descriptor )

Cannot create JDBC driver of class 'oracle.jdbc.OracleDriver' for connect URL '

database :URL(数据库连接池)写错了;

例:jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = URL)(PORT = 端口))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = name)))


 

猜你喜欢

转载自blog.csdn.net/kangi/article/details/81670796