zoukankan      html  css  js  c++  java
  • jmeter jdbc各字段的含义

    JDBC采样器各选项的含义如下:

    1.Variable Name

    其中的Variable Name和上面JDBC Connection Configuration中的Variable Name相同,这里表示JDBC Connection Configuration 建立一个名为pubpool的连接池,之后其他JDBC Request 都共用这个连接池。

    2.SQL Query

    (1)Query Type

    xxx Statement需要填写的sql是一句完整可执行的sql,而Prepared xxx Statement允许用户在sql中变量,然后再Parameter values和Parameter types中填写参数和类型,最终执行时替代sql中的变量,形成一句完整的sql语句。

    Select statement:

    ##待验证,网上找的例子:

    如果SQL语句中需要使用参数变量,那么Query Type 需要设置为Select Statement ,需要先添加Random Variable,然后在Parameter Values中输入${变量名称},${变量名称};

    在Paramter types中输入变量的数据类型。 如下图示:

    中间用逗号分隔。只能执行第一个SQL语句。

    Update statement: 对于Insert、Update、Delete语句,需要设置Query Type为:Update Statament.数据修改语句中可以使用参数,而且可以顺序执行多个修改语句。

    Egg:

    Callable statement:

    ##待验证:

    多个查询语句(不使用参数的情况下)可以放在一起顺序执行,需要设置Query Type为Callable Statement,然后顺序输入select语句,不用加go或者分号。如果Query Type设置为:Select Statement的话,只执行第一个SQL语句。

    Prepared select statement:

    Prepared update statement:

    Commit:

    把JDBC connection configuration中的自动提交为false,执行更改,增加或删除操作后,查询数据并无更改,再添加一个JDBC Request,设置其Query Type为commit,再次查询,之前的操作生效。

    Rollback:

    把JDBC connection configuration中的自动提交为false,执行更改,增加或删除操作后,查询数据并无更改(相当于编辑没保存), 再添加一个JDBC Request,设置其Query Type为rollback(相当于编辑后撤销),再次查询,仍然没有更改。

    如果把JDBC connection configuration中的自动提交为true,执行更改,增加或删除操作后,查询数据更改,但一旦事物被提交就无法rollback。

    Autocommit(false)和Autocommit(true):

    把JDBC connection configuration中的自动提交为true或false,是设置系统参数的默认值。添加一个JDBC Request,设置其Query Type Autocommit为true或false后(相当于修改系统参数),再进行对数据库的增加、删除、修改操作。

    Edit:必须是对上述之一的结果的引用, 为使用正则表达式的操作。

    (2)Parameter values:表示我们要添加的数据,需要不同数据添加可以使用参数化

    Parameter types为上面需要输入数据的类型,与上面的一一对应

    Parameter values和Parameter types:成对出现,且sql语句中有多少个?,这里就必须有多少对参数键值对,假设sql语句为select * from ZMYW_USER where ID=?,那么可以设置Parameter values为${id},Parameter types为VARCHAR

    (3)Variable names:变量名称,为数据库的字段名称,有多个字段返回时,可以使用逗号隔开,用于存放select操作返回的查询结果

    Result variable name:用于存放select操作返回的查询结果集。

    3.扩展:

    (1) 当选择了"Prepared select statement"、”Prepared update statement "Callable statement"的类型时,每个连接的语句缓存使用 JDBC 请求。在默认情况下将存储每个连接高达 100 Prepared Statements,这可能会影响您的数据库 (打开的游标)。这可以通过定义"jdbc sampler.nullmarker"属性更改。

    (2)在实际的项目中,至少有2种类型的JDBC请求需要关注:select语句和存储过程。前者反应了select语句是否高效,以及表的索引等是否需要优化;后者则是反应存储过程的算法是否高效。它们如果效率低下,必然会带来响应上的不尽如人意。对于这两种请求,JDBC请求的配置略有区别。

    (1)Query Type为Select Statement时,对应执行代码为:stmt = conn.createStatement();

    ResultSet rs = null;

    rs = stmt.executeQuery(sql);

    return getStringFromResultSet(rs).getBytes(ENCODING);

    (2)Query Type为Callable Statement时,对应执行代码为:CallableStatement cstmt = getCallableStatement(conn);

    int out[]=setArguments(cstmt);

    boolean hasResultSet = cstmt.execute();

    String sb = resultSetsToString(cstmt,hasResultSet, out);

    return sb.getBytes(ENCODING);

    (3)Query Type为Update Statement时,对应执行代码为:stmt = conn.createStatement();

    stmt.executeUpdate(sql);

    int updateCount = stmt.getUpdateCount();

    String results = updateCount + " updates";

    return results.getBytes(ENCODING);

    (4)Query Type为Prepared Select Statement时,对应执行代码为:PreparedStatement pstmt = getPreparedStatement(conn);

    setArguments(pstmt);

    ResultSet rs = null;

    rs = pstmt.executeQuery();

    return getStringFromResultSet(rs).getBytes(ENCODING);

    (5)Query Type为Prepared Update Statement时,对应执行代码为:

    PreparedStatement pstmt = getPreparedStatement(conn);

    setArguments(pstmt);

    pstmt.executeUpdate();

    String sb = resultSetsToString(pstmt,false,null);

    return sb.getBytes(ENCODING);

    (6)Query Type为Rollback时,对应执行代码为:

    conn.rollback();

    return ROLLBACK.getBytes(ENCODING);

    (7)Query Type为Commit时,对应执行代码为:

    conn.commit();

    return COMMIT.getBytes(ENCODING);

    (8)Query Type为AutoCommit(false)时,对应执行代码为:conn.setAutoCommit(false);

    return AUTOCOMMIT_FALSE.getBytes(ENCODING);

    (9)Query Type为AutoCommit(true)时,对应执行代码为:

    conn.setAutoCommit(true);

    return AUTOCOMMIT_TRUE.getBytes(ENCODING);

    (10)其它情况直接抛异常:throw new UnsupportedOperationException("Unexpected query type: "+_queryType);

    参考自:http://f.dataguru.cn/forum.php?mod=viewthread&tid=555033&highlight=JDBC

  • 相关阅读:
    int (*p)[10] 与*p[10]的区别
    运算顺序
    关于linux开机进入grub问题的解决方法
    对于特殊字符串的处理方法
    学习进度条
    阅读《实例化需求》4-6章有感
    学习进度条
    阅读《实例化需求》1-3章有感
    问题账户需求分析
    2016年秋季个人阅读计划
  • 原文地址:https://www.cnblogs.com/yajing-zh/p/5273232.html
Copyright © 2011-2022 走看看