jmeter连接数据库

转自http://blog.csdn.net/ck3207/article/details/52704923

jmeter实际应用过程中,都免不了要连接数据库。主流数据库有Oracle、sqlserver、MySQL…由于我实际用到的数据库只有mysql 与 oracle 就只介绍这两种数据库的配置及运用。

数据库驱动

连接数据库,需要下载对应的数据库驱动jar包 
建议都去从官网下载: 
mysql jar包地址:http://dev.mysql.com/downloads/connector/j/ 
mysqlAdrress

oracle jar包下载地址: 
http://www.oracle.com/technetwork/database/features/jdbc/index-091264.html 
oracleAdress

提示:mysql jdbc driver下载最新的就可以;但是oracle jdbc driver建议下载为对应数据库版本的驱动。下载oracle驱动包需要登录,如果没有建议建一个账号,两分钟就可以搞定。 
分享一个我目前的驱动: 
链接:http://pan.baidu.com/s/1ctDMpw 密码:twqn

加载驱动

mysql 的驱动包可以放在对应Java安装目录下的jdk下的jre下的lib下的ext目录下。 
Example:C:\Program Files\Java\jdk1.7.0_79\jre\lib\ext 
oracle 的驱动包需要放在对应的jmter安装目录下的lib目录下。 
Example:D:\apache-jmeter-3.0\lib

配置数据库连接

Mysql

mysql 
如上图,配置的时候需要注意两点。一是:Variable Name 这个变量就是数据库配置的名称。若进行jdbc Request,必须输入数据库配置名称。如果找不到这个数据库配置名称,那么相当于不知道你要连的数据库的地址、用户名以及密码。 
mysql数据库连接地址格式为: 
jdbc:mysql://主机ip或者机器名称:mysql监听的端口号/数据库名称 
Example: jdbc:mysql://localhost:3306/test

oracle

oracle相对于mysql稍有写区别。oracle数据库地址连接格式为: 
jdbc:oracle:thin:@ip:port:实例名 
eg:如果是本地的oracle数据库,端口为1521,数据库实例名为:test 
那么连接地址为:jdbc:oracle:thin:@localhost:1521:test 
注意:实例名称并不是数据库名称 
如果不知道实例名,那么可以在pl sql可以查看。 
操作过程为:菜单栏 help > Support Info… >TNS Names 
info 
上图 SERVICE_NAME既是实例名。另外oracle配置时,需设置Validation Query为:select 1 from dual,如果是默认 select 1执行时会出现错误。

访问数据库

以下主要以mysql为例,oracle与之相似。 
jdbc Request 
JDBC Request时用到了前面说到的 Variable Name,需对应。运行如图语句,可以得到如下图的结果。 
result1  
由此可见,数据库连接是成功了。

含变量的sql语句实现

sql中含变量是在所难免,当需要填入变量时候,可以用?代替变量,在参数值(Parameter values)中输入变量值,参数类型(Parameter types)中输入参数的实际类型。如图: 
result2 
但这样的变量输入方式没有实际意义,所以需要一个真正的变量而不是为变量。定义一个用户自定义变量name,并赋值为:ck1。如图: 
name 
在 JDBC Request中,输入参数值中改成 ${name}(在jmter中,变量表达方式为:${variable})如图: 
variable 
在执行有变量的sql时,需注意QueryType应选择Prepared Select Statement。当有多个参数时,参数间需要用逗号隔开。对应的,参数类型个数需与参数个数对应,参数类型与参数类型也是用逗号隔开。

获取JDBC Request结果

数据库交互后,可能需要提取对应字段的值,那么需要提取结果。如图,先设置输入变量(Variable Names)。注意:一:输出变量值个数若为多个,中间用逗号隔开;二:输出变量值个数必须与选取的个数一致,不能多也不能少。 
getresult 
其执行结果是一个两行三列的数据。那么三列(id,name,agend)分别对应为:A,B,C。如果想得到name列的第二条数据,则变量值为:B_2。如果想得到agend列的第一条数据,则变量值为:C_1。想得到X列第Y条数据,器变量值为:X_Y。 
X_Y 
如果想得到执行结果的总数,则可用 A_#(A列数据总数)表示,也可以用B_#或C_#。 
当你执行oracle数据时候,发现sql没有问题,但是就是报语法错误了。有两点建议,一:查看QueryType值是否正确;二:查看sql最后有没有分号(;),绝对不能含有分号。mysql目前没有这个问题。还有一点,当进行增、删、改语句时,都是选择QueryType为Update Statement(Prepared Update Statement)

posted @ 2017-04-07 11:29  天空是我喜欢的颜色  阅读(1247)  评论(1编辑  收藏  举报