Generating a list of statements in the statement pool
- Last Updated: June 27, 2019
- 2 minute read
- DataDirect Connectors
- JDBC
- Aha! 6.0
- Amazon Redshift 6.0
- Apache Cassandra 6.0
- Apache Hive 6.0
- Apache Spark SQL 6.0
- Atlassian Jira 6.0
- Autonomous REST Connector 6.0
- Cloudera Impala 5.1
- + 24
The following code shows how to return an ExtStatementPoolMonitor object using a connection and how to generate a list of statements in the statement pool associated with the connection.
Note: The following example is drawn from a Microsoft SQL Server use
case, but applies to most Progress DataDirect drivers.
private void run(String[] args) {
Connection con = null;
PreparedStatement prepStmt = null;
String sql = null;
try {
// Create the connection and enable statement pooling
Class.forName("com.ddtek.jdbc.sqlserver.SQLServerDriver");
con = DriverManager.getConnection(
"jdbc:datadirect:sqlserver://MyServer:1433;" +
"RegisterStatementPoolMonitorMBean=true",
"maxPooledStatements=10",
"test", "test");
// Prepare a couple of statements
sql = "INSERT INTO employees (id, name) VALUES(?, ?)";
prepStmt = con.prepareStatement(sql);
prepStmt.close();
sql = "SELECT name FROM employees WHERE id = ?";
prepStmt = con.prepareStatement(sql);
prepStmt.close();
ExtStatementPoolMonitor monitor =
((ExtConnection) con).getStatementPoolMonitor();
System.out.println("Statement Pool - " + monitor.getName());
System.out.println("Max Size: " + monitor.getMaxSize());
System.out.println("Current Size: " + monitor.getCurrentSize());
System.out.println("Hit Count: " + monitor.getHitCount());
System.out.println("Miss Count: " + monitor.getMissCount());
System.out.println("Statements:");
ArrayList statements = monitor.poolEntries(-1, -1, -1);
Iterator itr = statements.iterator();
while (itr.hasNext()) {
String entry = (String)itr.next();
System.out.println(entry);
}
}
catch (Throwable except) {
System.out.println("ERROR: " + except);
}
finally {
if (con != null) {
try {
con.close();
}
catch (SQLException except) {}
}
}
}
In the previous code example, the PoolEntries() method returns all
statements in the statement pool regardless of statement type, result set cursor type,
and concurrency type by specifying the value -1 for each
parameter as shown in the following code:
ArrayList statements = monitor.poolEntries(-1, -1, -1);
We could have easily filtered the list of statements to return only prepared statements that have a forward-only result set with a concurrency type of updateable using the following code:
ArrayList statements = monitor.poolEntries(
ExtStatementPoolMonitor.TYPE_PREPARED_STATEMENT,
ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE);