JMeter--JDBC Request

1、JDBC Request


这个采样器允许您向数据库发送JDBC请求(SQL查询)。

在使用这个之前,您需要设置一个JDBC Connection Configuration配置元素.

如果提供了变量名(Variable Names)列表,那么对于Select语句(Select statement)返回的每一行,将用相应列的值设置变量(如果提供了变量名),并设置行数。例如,如果Select语句返回3列的2行,而变量列表是 A,,C,则会设置以下变量:

A_#=2 (number of rows)
A_1=column 1, row 1
A_2=column 1, row 2
C_#=2 (number of rows)
C_1=column 3, row 1
C_2=column 3, row 2

如果Select语句(Select statement)返回0行,那么A_#C_#变量将被设置为0,而不会设置其他变量。

如果有必要,旧变量将被清除——例如,如果第一个select检索到6行,第二个select只返回3行,那么第4行、第5行和第6行的额外变量将被删除。

延迟时间是从获取连接所需的时间开始设置的。

JDBC Request
参数
参数 描述 是否为必须
名称 树中显示的这个采样器的描述性名称。
Variable Name of Pool declared in JDBC Connection Configuration 连接池绑定到的JMeter变量的名称。这必须与JDBC Connection Configuration中的“Variable Name”字段一致。
Query Type 根据语句类型设置:
-Select Statement
- Update Statement - 这也可以用于插入和删除
- Callable Statement
- Prepared Select Statement
- Prepared Update Statement- 这也可以用于插入和删除
- Commit
- Rollback
Autocommit(false)
Autocommit(true)
- Edit- 这应该是一个变量引用,它的值应该等于上面的值之一。
SQL Query SQL query.

不要输入结尾的分号。

通常不需要使用花括号{ }来包含可调用的语句(Callable statements);但是,如果数据库使用非标准语法,则可以使用它们。

如果需要的话,JDBC驱动程序会自动转换包含在{}中的语句。
比如:
- select * from t_customers where id=23
- CALL
SYSCS_UTIL.SYSCS_EXPORT_TABLE (null, ?, ?, null, null, null)
参数值:
tablename,filename
参数类型:
VARCHAR,VARCHAR
第二个示例假设您正在使用Apache Derby。
Parameter values 参数值的逗号分隔列表。使用]NULL[表示NULL参数。(如果需要,可以通过定义属性“jdbcsampler.nullmarker”来更改空字符串。)如果任何值都包含逗号或双引号,那么列表必须用双引号括起来,并且任何嵌入的双引号都必须加倍,例如:
"Dbl-Quote: "" and Comma: ,"
即使参数是OUT of one,语句中也必须有与占位符一样多的值。确保设置一个值,即使该值不会被使用(例如在CallableStatement中)。

解释:如果数据库操作语句是带有参数的语句,参数值一般以问号?作为占位符,那么给操作语句的参数赋值就在这里进行。表格下方将有示例说明
是(如果准备的或可调用的语句具有参数)
Parameter types SQL参数类型的逗号分隔列表(例如** INTEGER DATEVARCHARDOUBLE)或常量的整数值。当您使用自定义数据库类型驱动程序时(例如OracleTypes.CURSOR**提出的时,可以使用这些整数值。游标可以用其整数值-10表示)。这些定义为java.sql类中的字段。类型,请参阅例如:java.sql.Types Javadoc。

注意:JMeter将使用运行时JVM定义的任何类型,所以如果您在不同的JVM上运行,一定要检查适当的文档

如果可调用语句具有INOUT或OUT参数,那么必须在适当的参数类型前加上前缀来表示这些参数,例如,使用“INOUT INTEGER”而不是“INTEGER”。
如果没有指定,则假设“IN”,即“DATE”和“IN DATE”是一样的。
如果类型不是java.sql中找到的字段之一。类型,JMeter也接受相应的整数,例如,因为OracleTypes。游标== -10,可以使用“INOUT -10”。
语句中有多少占位符,就有多少类型。

解释:数据库操作语句的数据类型分多种,上面所列出的参数值什么数据类型,在这里进行一一对应。表格下方将有示例说明。
是(如果准备的或可调用的语句具有参数)
Variable Names 用逗号分隔的变量名列表,用于保存Select语句、准备的Select语句或callable语句返回的值。注意,当与CallableStatement一起使用时,变量列表必须与调用返回的OUT参数相同。如果变量名比OUT参数少,那么在线程上下文变量中存储的结果应该与提供的变量名一样多。如果存在的变量名多于参数,则将忽略其他变量
Result Variable Name 如果指定,将创建一个对象变量,其中包含一个行映射列表。每个映射都包含列名作为键,列数据作为值。用法:
columnValue = vars.getObject("resultObject").get(0).get("Column Name");
Handle ResultSet 定义如何处理从callable statements返回的ResultSet:

- Store As String(默认)-变量名列表中的所有变量都存储为字符串,当出现在列表中时,不会迭代结果集。clob将被转换为字符串。blob将被转换为字符串,就好像它们是UTF-8编码的字节数组一样。在jdbcsampler采样器之后,clob和blob都将被切断。max_retain_result_size字节。

- Store As Object——变量列表上的ResultSet类型的变量将被存储为对象,可以在后续的测试/脚本中访问和迭代,不会在ResultSet中迭代。将像选择Store As String那样处理CLOBs。BLOBs将存储为字节数组。在jdbcsampler.max_retain_result_size字节之后,CLOBs和BLOBs都将被切断。max_retain_result_size字节。

- Count Records-结果集(ResultSet)类型的变量将通过显示结果的记录计数来迭代。变量将作为字符串存储。对于BLOB对象,将存储对象的大小。
Parameter values和Parameter types示例



理解本节内容你还需要阅读另外两篇文章:


  • 创建一个数据库测试计划
  • JDBC Connection Configuration

当前版本的JMeter使用UTF-8作为字符编码。以前使用的是平台默认值。

确保Variable Name在整个测试计划中是唯一的。

你可能感兴趣的:(JMeter--JDBC Request)