我在我的应用程序中使用HSQLDB。现在我需要记录每个执行的sql语句。我不想自己处理SQL日志。在HSQLDB中有没有一种标准的方法呢?
答案 0 :(得分:11)
HSQLDB 2.2.x支持SQL日志记录。假设您的数据库名为test
,并使用JDBC URL jdbc:hsqldb:file:test
test.log是HSQLDB内部使用的数据更改日志。它不包含SELECT语句。它由HSQLDB创建和删除。这不是你想要的。
test.sql.log是包含所有带有时间和会话信息的SQL语句以及预准备语句的任何参数的日志。如果您使用:
,则会创建此日志SET DATABASE EVENT LOG SQL LEVEL 3
它包含以下条目:
2012-02-08 22:19:36.484 DETAIL 4 CALL USER()
2012-02-08 22:19:36.484 DETAIL 4 call database_version()
2012-02-08 22:19:36.484 DETAIL 4 COMMIT
2012-02-08 22:19:36.500 DETAIL 4 INSERT INTO Customer VALUES(0,'Laura','Steel','429 Seventh Av.','Dallas')
您可以在网址
上使用hsqldb.sqllog = 3请参阅此处的指南并查看本章末尾的命令和属性语法:
http://hsqldb.org/doc/2.0/guide/management-chapt.html#mtc_monitoring_operation
答案 1 :(得分:1)
不是特定于HSQLDB,但如果您的客户端使用JDBC,也许最简单的方法来记录SQL语句就是使用JDBC驱动程序包装器。有很多implementations可供选择。