• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    JMeter对数据库的查询操作步骤详解

    提示:

    关于JMeter如何连接MySQL数据库,前面文章已经详解的讲解过了。因为配置数据库连接是比较固定的步骤,这里就不重复讲解了。

    本篇文章主要详细说明,使用JDBC Request组件,如何对数据库进行查询的各种操作。

    JMeter中查询语句的操作步骤:

    1、使用“用户自定义变量”实现参数化

    即:在SQL Query使用参数化变量。

    在JMeter中,有两个地方可以设置“用户自定义变量”。

    一种是“测试计划”界面中设置“用户自定义变量”。

    一种是添加配置元件中的“用户自定义变量”。

    我们以“测试计划”为例。如下图:

    (1)在“测试计划”界面中设置“用户自定义变量”。

    我们添加了一个自定义变量用户ID,如下图:

    (2)在JDBC Request界面的SQL Query中,使用${变量名}的方式进行引用。

    1. 我们在Varíable Name填写对应的数据库配置名称,与JDBC Connection Configuration组件中的Varíable Name对应。
    2. Query Type:选择Select Statement,因为我们只进行一条查询的SQL语句。
    3. 编写SQL语句,并使用${变量名}方式引用参数化变量。

    如下图所示:

    2、 在SQL Query中使用占位符传递参数

    传递的参数值有常量和变量之分。

    (1)传递的参数值是常量

    传递2个常量:用户ID=3,用户名=孙悟空。

    需要注意:

    1. 如果我们需要发送带有占位符的SQL语句,Query Type:需要选择Prepared Select Statement
    2. Parameter values参数值和Parameter types参数类型,都必须要填写(参数类型与表设计结构中的类型一致即可)。如果有多个占位符,就需要有多组数据,之间用逗号分隔。
    3. 发送SQL请求时,第一个参数会自动赋值给第一个占位符,以此类推,注意参数的编写顺序。

    如下图所示:

    (2)传递的参数值是变量

    也就是占位符所接收的参数是一个参数化变量。我们把对应常量的位置,变成参数化变量即可,其他同上。

    如下图所示:

    各种形式的参数化可以这样使用。关于参数化相关知识,前面文章有详细说明。

    3、Variables names参数的使用方法

    Variables names参数的作用是,把SQL语句查询出来的数据保存到变量中。一般查询返回几个字段,就用几个变量来进行接收,不同的变量之间用逗号隔开。

    JMeter官网给的解释是:如果给这个参数设置了值,它会保存SQL语句返回的数据和返回数据的总行数。

    假如,SQL语句返回2行,3列的数据,且Variables names中设置为A,B,C,那么如下变量会被设置为:

    A_#=2     # A列的总行数
    A_1=3     # A列的第一个数据,也就是第1列, 第1行的数据
    A_2=4     # A列的第二个数据,也就是第1列, 第2行的数据
    B_#=2     # B列的总行数
    B_1=sunwukong@1268.com    # B列的第一个数据,也就是第2列, 第1行的数据
    B_2=zhubajie@1268.com     # B列的第二个数据,也就是第2列, 第2行的数据
    C_#=2     # C列的总行数
    C_1=孙悟空    # C列的第一个数据,也就是第3列, 第1行的数据
    C_2=猪八戒    # C列的第二个数据,也就是第3列, 第2行的数据

    说明:

    如果返回结果为0,那么A_#C_#会被设置为0,其它变量不会设置值。

    如果第一次请求返回6行数据,第二次请求只返回3行数据,那么第一次那多的3行数据,在线程变量中会被清除。

    可以使用${A_#}${A_1}来获取相应的值,作为参数化数据进行传递。

    可以添加Debug Sampler组件,来查看参数是否获取到了。

    示例:

    (1)JDBC Request组件界面内容

    Variable names中定义接收数据的变量名,多个变量名之间用逗号分隔。

    如下图所示:

    (2)查看结果

    添加一个取样器Debug Sampler用来查看输出的结果。(Debug Sampler组件可以查看到JMeter脚本运行中所有的变量)

    JDBC Request请求结果,如下图所示:

    查看Debug Sampler中的输出结果,如下图所示:

    我们从上图中可以看到,JMeter把从数据库中查询出来的数据,存储在线程变量中了。

    提示:

    A代表第一列所有的数据,A_#可以获取到第一列的行数。A_n可以获得第一列第n行的数据。BC的功能类似, 假如我们只需要第一列和第三列的数据,可以写成A,,C,中间的,不可以省略。

    4、Result variable name参数使用方法

    如果给这个参数设置值,它会创建一个对象变量,保存所有返回的结果。

    示例:

    (1)JDBC Request组件界面内容

    Result variable name中定义接收数据的变量名。

    如下图所示:

    (2)查看结果

    添加一个取样器Debug Sampler用来查看输出的结果。(Debug Sampler组件可以查看到JMeter脚本运行中所有的变量)

    JDBC Request请求结果,如下图所示:

    查看Debug Sampler中的输出结果,如下图所示:

    (3)数据处理

    上面查看到的结果集,我们如何应用里面的数据呢?

    我们可以创建一个BeanShell取样器,也可以在JDBC Request取样器下一级添加后置处理器BeanShell PostProcessor组件。

    在里边编写如下代码,来获取需要的指定数据,提供给后面的接口请求使用。

    对象中具体数据的获取方法:columnValue = vars.getObject("resultObject").get(0).get("Column Name")

    5、总结:

    以上我们就把Parameter valuesParameter typesVariable namesResult variable name的使用方式进行了说明。

    在日常工作中,可以举一反三,灵活使用。

    6、注意事项:

    (1)The server time zone value服务器时区异常

    如果报错,如下:

    Cannot create PoolableConnectionFactory (The server time zone value '???��������??��??' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.)

    解决方法:数据库连接URL后面加 serverTimezone=GMTserverTimezone=GMT%2B8,即可解决。

    (2)执行多条SQL语句

    执行多条SQL语句时,查询语句selectupdateinsert语句不能在同一个JDBC Request组件中执行。

    当执行多条SQL 语句时,每条语句后面加;

    并且在 Database URL 后增加一个参数allowMultiQueries=true,否则将不能够执行多条语句,报错。

    (3)更新操作中文乱码

    需要在 Database URL 后增加一个参数characterEncoding=utf-8,这样就可以解决更新操作时候的中文乱码了。

    提示:一定要设置为UTF-8编码吗?不一定,要跟你的数据库的编码保持一致,就不会中文乱码了。

    (4)Datebase URL添加参数规则

    Datebase URL后增加参数,在dbname后加?,如有多个参数,每个参数用隔开,如:

    jdbc:mysql://127.0.0.1:3306/guest?serverTimezone=GMTuseUnicode=truecharacterEncoding=utf-8allowMultiQueries=true

    参考:https://www.cnblogs.com/linbo3168/p/6039489.html

    以上就是JMeter对数据库的查询操作 的详细内容,更多关于JMeter数据库操作 的资料请关注脚本之家其它相关文章!

    您可能感兴趣的文章:
    • python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解
    • Jmeter基于JDBC请求实现MySQL数据库测试
    • Jmeter连接Mysql数据库实现过程详解
    • Jmeter连接数据库过程图解
    上一篇:SQL注入的实现以及防范示例详解
    下一篇:通过Qt连接OpenGauss数据库的详细教程
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    JMeter对数据库的查询操作步骤详解 JMeter,对,数据库,的,查询,