(本文档仅供参考)
使用场景
此jsp是直接调用驱动执行单条SQL,执行的SQL语句必须是一个 SQL 数据操作语言(Data Manipulation Language,DML)语句,比如 INSERT、UPDATE 或 DELETE 语句;或者是无返回内容的 SQL 语句,比如 DDL 语句。jsp源代码调用的是jdbc驱动实现的标准的PreparedStatement接口的executeUpdate()方法,未走smartbi产品内部的代码逻辑,主要测试场景如下:
...
注:此jsp调用的是驱动通用接口,而产品层面对部分数据库有进行优化对应的逻辑,故某些情况下,驱动返回的速度可能会更慢。
操作步骤
1、获取执行SQL
参考wiki文档如何获取报表或数据集执行的sql语句及其执行时长获取到SQL。比如回写则需要查看用户日志中的Update SQL。
2、修改SQL语句
回写语句中,是需要手动将问号转化为对应的数据,根据数据类型判断是否需要加引号
3、下载jsp文件放到vision文件夹
下载 单条SQL:testjdbcupdate.jsp, 多条SQL:testjdbcbatchMultiple.jsp,并 并将testjdbcupdate.jsp文件放到Smartbi的vision文件夹下,jsp 或 testjdbcupdateMultiple.jsp 文件放到Smartbi的vision文件夹下,不需要重启应用服务器。
4、访问jsp页面执行数据库语句
浏览器访问 http://IP:PORT/smartbi/vision/testjdbcupdate.jsp ,在页面上填写待测试的数据库信息。.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可以用分号隔开
(2)增删改都能执行
(3)代表每条sql执行后影响的行数
6、后续处理方案
上述场景中,需要根据测试结果分析确定后续处理方案。若在smartbi中异常,若通过此种方式测试正常,可将截图发回,以便进一步跟踪此问题。
补充
(1)单条SQL执行
若需要执行带?的SQL,可使用此新jsp。testjdbcupdate2.jsp
该jsp是在开启事务后执行insert,且执行的insert语句支持带问号的,与导入模板的逻辑基本一致。
(2)多条SQL执行
其实产品执行的批量是带问号的批量,是把增删改作为三个带问号的sql,然后每个sql可以设置多次参数,实现通过一个问号的sql执行多次增删改。
但是此jsp执行的sql不支持带问号,不支持执行sql设置不同参数执行多次,所以是需要手动将问号转化为对应的数据。