(本文档仅供参考)

使用场景

此jsp是直接调用驱动执行单条SQL,执行的SQL语句必须是一个 SQL 数据操作语言(Data Manipulation Language,DML)语句,比如 INSERT、UPDATE 或 DELETE 语句;或者是无返回内容的 SQL 语句,比如 DDL 语句。jsp源代码调用的是jdbc驱动实现的标准的PreparedStatement接口的executeUpdate()方法,未走smartbi产品内部的代码逻辑,主要测试场景如下:

1、回写(插入、删除、更新);

2、excel导入模板不开启批量的执行(插入、更新);

3、知识库数据更新(插入、删除、更新)

注:此jsp调用的是驱动通用接口,而产品层面对部分数据库有进行优化对应的逻辑,故某些情况下,驱动返回的速度可能会更慢。

操作步骤

1、获取执行SQL

参考wiki文档如何获取报表或数据集执行的sql语句及其执行时长获取到SQL。比如回写则需要查看用户日志中的Update SQL。

2、修改SQL语句

回写语句中,是需要手动将问号转化为对应的数据,根据数据类型判断是否需要加引号

3、下载jsp文件放到vision文件夹

下载 单条SQL:testjdbcupdate.jsp多条SQL:testjdbcbatchMultiple.jsp 并将testjdbcupdate.jsp 或 testjdbcupdateMultiple.jsp 文件放到Smartbi的vision文件夹下,不需要重启应用服务器

4、访问jsp页面执行数据库语句

浏览器访问 http://IP:PORT/smartbi/vision/testjdbcupdate.jsp 或 http://IP:PORT/smartbi/vision/testjdbcupdateMultiple.jsp ,在页面上填写待测试的数据库信息。
注:IP和PORT需根据实际地址进行修改。


如果是动态驱动则需要设置驱动类目录,获取步骤见wiki文档(Java调用jdbc驱动测试)中的步骤1。

5、提交并查看测试结果

5.1、放入需要测试的SQL到jsp中
点击提交后即可查看到该SQL执行的结果及耗时。

如果sql执行成功,“更新结果=”后会跟一个数值代表影响的行数,该数值大于等于0。
一般insert语句成功执行了 =后面就是1;update和delete语句得看where条件定位的记录数。

单条SQL:

 

多条SQL:

(1)批量多条SQL可以用分号隔开

E3BA94A6-11E7-4e22-98EE-50FBA9332BD1.png


(2)增删改都能执行

86235B8C-C93A-49e6-9768-B06A00AEFEA3.png


(3)代表每条sql执行后影响的行数

9F3CFA1E-6CE8-4dcb-81E7-980C84AE613B.png

5.2、如点击提交后报错,具体见wiki文档(Java调用jdbc驱动测试)步骤4的解析。

6、后续处理方案

上述场景中,需要根据测试结果分析确定后续处理方案。若在smartbi中异常,若通过此种方式测试正常,可将截图发回,以便进一步跟踪此问题。


补充

(1)单条SQL执行

若需要执行带?的SQL,可使用此新jsp。testjdbcupdate2.jsp

该jsp是在开启事务后执行insert,且执行的insert语句支持带问号的,与导入模板的逻辑基本一致。

(2)多条SQL执行

其实产品执行的批量是带问号的批量,是把增删改作为三个带问号的sql,然后每个sql可以设置多次参数,实现通过一个问号的sql执行多次增删改。

但是此jsp执行的sql不支持带问号,不支持执行sql设置不同参数执行多次,所以是需要手动将问号转化为对应的数据