JDBC
https://dev.mysql.com/downloads/
mysql-connector-java-5.1.46.jar放在ext的lib目录下就可以
添加–配置元件–JDBC Connection Configuration
添加后展示5个部分,分别解释一下5个部分
第一部分variable Name Bound to pool
Variable Name for created pool:数据库连接池的名称。
jmeter中一个测试计划可以有多个 JDBC Connection,要求名称不重复。
第二部分Connection pool Configuration连接池参数配置,保持默认
Max Number of Connections:连接池最大连接数(0表示线程不共享连接,每个线程都会获取连接,一般默认为0即可)
Max Wait(ms):连接池最大等待时间 ,默认10s,一般默认即可
Time Between Eviction Runs(ms):线程可空闲时间,若空闲超过该时间则关掉,默认1min
Auto Commit:自动提交sql语句(更新数据的操作,是否需要commit,true表示需要,false表示不需要)
Transaction isolation:事务隔离级别,一般保持默认即可
第四部分Connection validation by Pool验证连接池是否可响应(测试用)
Test While Idle:当连接空闲时是否断开,true表示是,false表示否
Soft Min Evictable Idle Time(ms):连接池处于空闲状态的最短时间
Validation Query:简单的查询,用来验证数据库是否仍在响应,一般选择select 1
第五部分Database Connection Configuration数据库链接配置
Database URL:数据库链接,例如:jdbc:mysql://ip:port/dbname?,后可跟useUnicode=true&allowMultiQueries=true&characterEncoding=utf-8(用来支持多条sql、定义编码格式)
JDBC Driver class:数据库驱动,根据不同数据库选择,若是mysql,就选择com.mysql.jdbc.Driver
常见的数据库链接url
数据库驱动、URL
数据库 | 驱动 | url |
---|---|---|
MySQL | com.mysql.jdbc.Driver | jdbc:mysql://host:port/{dbname} |
Oracle | oracle.jdbc.driver.OracleDriver | jdbc:oracle:thin:user/pass@//host:port/service |
sqlServer | $com.microsoft.sqlserver.jdbc.SQLServerDriver | jdbc:sqlserver://host:port;databaseName=databaseName |
PostgreSQL | org.postgresql.Driver | jdbc:postgresql:{dbname} |
第一部分Variable Name Bound to Pool
Variable Name of Pool declared in JDBC Configuration ,与配置元件中设置的JDBC Connection Configuration中Variable Name for created pool一致,若不一致获取不到配置的参数
第二部分:SQL QUERY搜索类型
Query Type(一般前三种就够用)
Select Satement 查询(将数据都查询出来)
问题:写了两条语句并未查询出两条语句
写了两条语句并未查询出两条语句的解决办法:将Query Type选择Callable Satement ,就可以展示两条数据
修改数据
Update Satement增删改
Callable Satement 包含
Prepared Select Satement预编译查询,语句条件字段值可以用占位符?(逗号分隔),选择这个时需要与后面的第三部分配合使用
一个占位符:
注意:假如数据库类型int ,Parameter types就只能是integer或bigint或varchar
两个占位符:
第三部分也要写两个值,第一个值赋给第一个占位符,第二个赋给第二个占位符
Prepared Update Satement
commit
Rollback
AutoCommit (false)
查询完后怎么用?(将查询的内容存起来)
查询到的cid、caption字段传给Variable Names的cid、caption变量,在Result Variable Name中用result变量将结果保存起来
若要遍历cid或caption的值可以用foreach操作,若要引用cid或caption都可以用${}引用
假若将变量result写到Result Variable Name,用beanshell对result的值处理
log.info(“==========”+vars.getObject(“result”));用日志打印出获取到的cid的值
log.info(““+vars.getObject(“result”).size());用日志打印出对象有15个元素(cid)
log.info(””+vars.getObject(“result”).get(0));用日志打印出对象第一个元素(cid)
log.info(“==========”+vars.getObject(“result”).get(5).get(“cid”));用日志打印出对象第5个元素的值
如果要获取元素的值供后面使用,先转成String ,在vas.put到一个变量就可以用了
Object obj=vars.getObject(“result”).get(5).get(“cid”);
vars.put(“var”, obj.toString());
第三部分
Parameter values用于替换SQL语句中占位符?(逗号分隔)
Parameter types对应参数数据库中的类型(假如数据库类型int 就只能是integer,bigint、varchar)
Variable Names:sql执行后,结果保存到变量名列表(多个变量名用逗号分割)
Result Variable Name:保存SQL执行结果,每一行结果是一个包含列名的map
Query timeout(ms):查询超时时间,可以不填
Handle Results保存的结果集,保持默认即可
JDBC 预处理程序:可以做数据初始化
JDBC 后置处理程序:可以做数据的清理