为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:8
【操作系统】:win11
【CPU】:R7-6800H
【问题描述】*:使用JDBC连接达梦,获取的DmdbPreparedStatement对象后,那个方法可以打印执行的sql呢?
如果是作为日志使用,可以在url中开启sql级别的log实现,例如
jdbc:dm://192.168.56.180:5236?LOG_DIR=./&LOG_LEVEL=sql
将会产生如下日志
[SQL - 2022-11-14 06:59:19] tid:1 - [main] { conn-1, stmt-1 } executeQuery(String): rs-1; [PARAMS]: “select count(1) from user_tables where table_name = ‘JDBCTEST’”; [USED TIME]: 49.281ms;
[SQL - 2022-11-14 06:59:19] tid:1 - [main] { conn-1, stmt-1 } executeUpdate(String): 0; [PARAMS]: “drop table jdbctest”; [USED TIME]: 44.9915ms;
[SQL - 2022-11-14 06:59:19] tid:1 - [main] { conn-1, stmt-2 } executeUpdate(String): 0; [PARAMS]: “create table jdbctest(userid integer,uname varchar2(100),udate date,udatetime timestamp(6),ufloat float,udecimal number(14,8),constraint jdbctest_pk primary key(userid))”; [USED TIME]: 6.8534ms;
[SQL - 2022-11-14 06:59:19] tid:1 - [main] { conn-1, stmt-2 } executeUpdate(String): 0; [PARAMS]: “create or replace directory KNIGHTDIR as ‘E:\testddir\java_simple’;”; [USED TIME]: 4.5077ms;
[SQL - 2022-11-14 06:59:19] tid:1 - [main] { conn-1 } prepareStatement(String): pstmt-3, handle-5; [PARAMS]: “insert into jdbctest(userid,uname,udate,udatetime,ufloat,udecimal) values (?,?,?,?,?,?)”;
[SQL - 2022-11-14 06:59:19] tid:1 - [main] { conn-1, stmt-2 } executeQuery(String): rs-2; [PARAMS]: “select * from jdbctest”; [USED TIME]: 1.219ms;
日志级别定义如下,默认为off
off:不记录
error:只记录错误日志
warn:记录警告信息
sql:记录 sql 执行信息
info:记录全部执行信息
all:记录全部
在框架中通常也是通过日志级别判断是否利用代理类封装实际调用以便于日志类捕获相关信息
建议整理个demo发出来