Jmeter连接数据库进行增删改查
1 【JDBC Connection Configuration】
1.1 先添加【配置元件】——【JDBC Connection Configuration】
1.2【JDBC Connection Configuration】配置
Variable Name for created pool:变量名称,之后【JDBC Request】中会用到
Max Number of Connections:最大连接数,比如10
DatabaseURL:连接地址,jdbc:mysql://localhost:3306/student_info?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=UTC
JDBC Driver class:驱动,选择mysql
Username:数据库用户名,root
Password:数据库密码,123456
其他值默认即可
2 【JDBC Request】
2.1 添加【取样器】——【JDBC Request】
2.2 【JDBC Request】配置——查询学生信息
Select Statement:
作者:麦芒
链接:https://www.imooc.com/article/21205
来源:慕课网
SQL语句:Select * from `student`;
运行结果:
2.3 运行驱动报错解决办法
将【mysql-connector-java-8.0.11.jar】放到Jmeter/lib/ext目录下即可,
mysql-connector-java-8.0.11.jar下载地址:
链接:https://pan.baidu.com/s/1RN2Qd6Lv5kiMx9tAtniqBw
提取码:idas
2.4 【JDBC Request】配置——修改学生信息
例:将“江小白”的邮箱修改为jiangxiaobai@qq.com
SQL语句:UPDATE `student` SET email = 'jiangxiaobai@qq.com' WHERE name = '江小白';
运行结果:
查看数据库中江小白的邮箱已修改:
2.5 【JDBC Request】配置——添加学生信息
SQL语句:INSERT INTO `student`(`id`, `class_name`, `course_name`, `email`, `name`, `score`, `sex`, `student_id`) VALUES (12, '八年一班', '数学', 'lisi@163.com', '李四', 95, 'girl', '010');
运行结果:
查看数据库已增加此条数据:
2.6 【JDBC Request】配置——删除学生信息
删除数据库中id为12的学生信息:
运行结果:
查看数据库中id为12的学生已被删除:
2.7 结合参数化批量添加学生
2.7.1 使用【计数器】实现id自增
Maximum Value:计数器使用long存储的值,缺省时为2^63-1,长时间压测时一般不需要填
数字格式:可选格式,比如000,格式化为001,002;默认格式为Long.toString(),但是默认格式下,还是可以当作数字使用
引用名称:用于在其它元素中引用该值
与每用户独立的跟踪计数器(Track Counter Independently for each User):
(1)不勾选,则多线程测试时,线程2不会重置为从设置的起始值开始,会延续线程1的计数
(2)勾选,但不勾选“在每个线程组迭代上重置计数器”,则多线程测试时,线程2会重置为从设置的起始值开始,不会延续线程1的计数
(3)勾选,且勾选“在每个线程组迭代上重置计数器”,则单个线程每次循环时也会重置为设置的起始值
2.7.2 修改【JDBC Request—添加学生信息】中的SQL
将修改【JDBC Request—添加学生信息】中的SQL`id`字段对应的值改为${userid},即引用计数器中设置的变量名
SQL改为:INSERT INTO `student`(`id`, `class_name`, `course_name`, `email`, `name`, `score`, `sex`, `student_id`) VALUES (${userid}, '八年一班', '数学', 'lisi@163.com', '李四', 95, 'girl', '010');
2.7.3 设置线程数和循环次数
如,线程数:2,循环次数:3
2.7.4 运行结果对比
与每用户独立的跟踪计数器(Track Counter Independently for each User):
(1)不勾选
如下图所示,6个请求全部执行成功,且id从20到25
查看数据库中6个用户全部新增成功:
(2)勾选,但不勾选“在每个线程组迭代上重置计数器”
如下图所示,只有线程1的请求全部执行成功,线程2的请求全部执行失败,线程1的id值为从20-22,线程2的id值也为从20-22
查看数据库中只新增了3个用户:
(3)勾选,且勾选“在每个线程组迭代上重置计数器”
如下图所示,只有线程1的第1个请求执行成功,其他5个请求执行失败,每次请求的id值都为20
查看数据库中,只成功新增了id为20的一条数据:
2.8 Query Type带Prepared与不带的区别
Query Type选择“Update Statement”和“Prepared Update Statement”的区别:带Prepared,SQL语句中可以带参数,与下面的“Parameter values”和“Parameter types”连用。
比如上面批量插入的例子,可以用另一种方式:
SQL语句中参数用?号代替,然后在下面的“Parameter values”中传入值,在“Parameter types”中传入类型,多个变量以逗号分隔即可。实际效果与SQL中直接传入${userid}一样,但这种方式必须选择为Prepared Update Statement才能运行成功,选择Update Statement运行会报错。如果在SQL中直接传入${userid},则选择“Update Statement”和“Prepared Update Statement”两种方式皆可运行成功。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 提示词工程——AI应用必不可少的技术
· 地球OL攻略 —— 某应届生求职总结
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界