JMeter:使用 JDBC 请求将记录插入数据库

Posted

技术标签:

【中文标题】JMeter:使用 JDBC 请求将记录插入数据库【英文标题】:JMeter: Inserting record into database by using JDBC request 【发布时间】:2017-08-15 23:41:38 【问题描述】:

我已经在我的 JMeter 测试计划中配置了 JDBC 连接。 JDBC 连接中的数据库设置配置正确。 我正在从我的一个请求响应中提取员工 ID。(即 Employee_Id) 通过使用 BSF PostProcessor,我将员工 ID 存储到名为 Emp_ID 的变量中 我想将提取的员工 ID 插入到我的数据库中。

使用的数据库是 Oracle SQL developer,版本 4.0.1.14,Build MAIN-14.48。 表名是:Employee_Details 列名:Employee_id,数据类型:VARCHAR2

在 JDBC 请求中,我选择了“查询类型”作为“更新语句”并输入了以下查询:

Query 1: INSERT INTO Employee_Details (Employee_id) 
         VALUES ($Emp_ID)

Query 2: INSERT Employee_id='$Emp_ID'

参数类型以 VARCHAR2 形式给出。

在两次执行中,JMeter 都显示错误为“无法创建 PoolableConnectionFactory(ORA-00923:未在预期位置找到 FROM 关键字)”

请就此提出宝贵的建议。

【问题讨论】:

【参考方案1】:

我找到了一个避免出现问题的解决方法:

JDBC Request Query Type 需要是:Update Statement 查询需要作为块处理

BEGIN

SQL Statement

END;

【讨论】:

【参考方案2】:

我的期望是您的验证查询不正确:

如果您保留“验证查询”框的默认值 - Select 1 - Oracle 可能不太喜欢它。你需要改成select 1 from dual

参考资料:

DBCP - validationQuery for different Databases The Real Secret to Building a Database Test Plan With JMeter ORA-00923: FROM keyword not found where expected tips

【讨论】:

感谢 DMitri T 的建议,它现在正在工作。【参考方案3】:

有以下三点:

    检查验证查询并将其留空。附上截图 执行插入查询时,保持查询类型为已更新 执行查询时请添加database.tablename,然后执行。

【讨论】:

以上是关于JMeter:使用 JDBC 请求将记录插入数据库的主要内容,如果未能解决你的问题,请参考以下文章

jmeter之JDBC Request

JMeter JDBC 手动提交

Jmeter------将JDBC Request的查询结果作为另一个接口的请求参数

JMeter使用记录1 -- JDBC測试

jmeter之JDBC

Jmeter测量JDBC响应时间包括哪些步骤