SQL Tracing
来源:互联网 发布:捉鬼软件下载 编辑:程序博客网 时间:2024/04/29 20:15
在 Proxool 网页中看到 Proxool 提供 SQL Tracing 的功能。
不过以 Log 设定的方式一直没试成功。那也没关系,反正写程序一样能 Tracing
包装 Proxool 为 ConnectionProvider
并有 enableSqlTracing 与 disableSqlTracing 的功能
package connection.pool;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.logging.FileHandler;
import java.util.logging.Logger;
import org.logicalcobwebs.proxool.ConnectionListenerIF;
import org.logicalcobwebs.proxool.ProxoolException;
import org.logicalcobwebs.proxool.ProxoolFacade;
import org.logicalcobwebs.proxool.configuration.PropertyConfigurator;
class ConnectionListenerIFImpl implements ConnectionListenerIF {
private static Logger log = Logger.getLogger("ConnectionListenerIFImpl");
public ConnectionListenerIFImpl() {
}
public ConnectionListenerIFImpl(FileHandler f) {
// add fh as you want
}
public void onBirth(Connection arg0) throws SQLException {
}
public void onDeath(Connection arg0) throws SQLException {
}
public void onExecute(String sql, long ms) {
log.info(sql + "(" + ms + ")");
}
public void onFail(String arg0, Exception arg1) {
}
}
public class ConnectionProvider {
private static Logger log = Logger.getLogger(ConnectionProvider.class
.getName());
private static ConnectionListenerIF connectionListener = new ConnectionListenerIFImpl();
private static ConnectionProvider self = new ConnectionProvider();
public static ConnectionProvider getInstance() {
return self;
}
/**
* Constructor is private. you can get an instance by getInstance method
*/
private ConnectionProvider() {
try {
Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");
PropertyConfigurator.configure("Proxool.properties");
} catch (ProxoolException e) {
log.severe("Proxool driver is broken");
} catch (ClassNotFoundException e) {
log.severe("Cannot found driver class");
}
}
/**
* @return connection Get a database connection by proxool
*/
public Connection getConnection() {
Connection c = null;
try {
c = DriverManager.getConnection("proxool.db");
} catch (SQLException e) {
log.severe("Cannot get a connection");
}
return c;
}
/**
* enable the sql tracing function
*/
public void enableSqlTracing() {
try {
ProxoolFacade.addConnectionListener("db", connectionListener);
} catch (ProxoolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* disable the sql tracing function
*/
public void disableSqlTracing() {
try {
ProxoolFacade.removeConnectionListener("db", connectionListener);
} catch (ProxoolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
联机所使用的设定档:
jdbc-0.proxool.alias=db
jdbc-0.proxool.driver-url=jdbc:hsqldb:hsql://localhost:16384/mydb
jdbc-0.proxool.driver-class=org.hsqldb.jdbcDriver
jdbc-0.user=SA
jdbc-0.password=
PS. 主要焦点放在 sql tracing。若您真的要使用这个小工具,可以将联机部分改成比较有弹性的实作方式。
写个程序测看看:
package connection.pool;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
public class TestP {
public static void main(String[] args) throws SQLException{
ConnectionProvider cp = ConnectionProvider.getInstance();
Connection c = cp.getConnection();
Statement s = c.createStatement();
s.executeQuery("select * from books");
cp.enableSqlTracing();
s.executeQuery("select * from books");
cp.disableSqlTracing();
s.executeQuery("select * from books");
s.close();
}
}
- SQL Tracing
- Informix SQL-Tracing
- SQL Server:Trace and Replay Objects: A New API for SQL Server Tracing and Replay
- SAP HANA开启和关闭SQL追踪(Turning on and off SQL tracing)
- Code Tracing
- Enabling Tracing
- Oops-tracing
- Ray Tracing
- Ray Tracing
- Profiling and Tracing PL/SQL Programs【每日一译】--2013-1-21
- EVENT: 10046 "enable SQL statement tracing (including binds/waits)" (文档 ID 21154.1)
- Tracing Server-side bugs
- Process Tracing Using Ptrace
- Tracing Tips and Resources
- Driver API tracing
- Path tracing 实现
- Debugging and Tracing
- Tracing Tips and Resources
- 面试题
- 一个软件的结束
- 4.1
- Microsoft Visual Studio .NET 2003的安装
- WinForm C#拨号程序代码
- SQL Tracing
- 搬家了~
- 24岁了,压力很大
- 从今天起,做一个程序员
- Windows下常用的命令,大家用了多少?
- 关于安全的ActiveX控件的编写,纠正大家一点错误,包括MSDN上也有问题
- School VS College
- JAVA程序让手机可透视拍照
- 谈谈Listener Servlet的应用