optimize for oracle

This commit is contained in:
wenshao
2011-12-30 09:23:03 +08:00
parent 4d59388633
commit 8c4471c4c9
9 changed files with 207 additions and 15 deletions
@@ -0,0 +1,84 @@
package com.alibaba.druid.pool;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import junit.framework.TestCase;
import oracle.jdbc.OracleConnection;
import oracle.jdbc.driver.OraclePreparedStatement;
import com.alibaba.druid.util.JdbcUtils;
public class TestDruidOraclePreparedStatement extends TestCase {
private String jdbcUrl;
private String user;
private String password;
private DruidDataSource dataSource;
public void setUp() throws Exception {
jdbcUrl = "jdbc:oracle:thin:@10.20.149.85:1521:ocnauto";
// jdbcUrl = "jdbc:oracle:thin:@20.20.149.85:1521:ocnauto"; // error url
user = "alibaba";
password = "ccbuauto";
dataSource = new DruidDataSource();
dataSource.setPoolPreparedStatements(true);
dataSource.setUrl(jdbcUrl);
dataSource.setUsername(user);
dataSource.setPassword(password);
}
protected void tearDown() throws Exception {
JdbcUtils.close(dataSource);
}
public void test_0() throws Exception {
Class.forName(JdbcUtils.getDriverClassName(jdbcUrl));
for (int i = 0; i < 3; ++i) {
Connection conn = dataSource.getConnection();
// ResultSet metaRs = conn.getMetaData().getTables(null, "ALIBABA", null, new String[] {"TABLE"});
// JdbcUtils.printResultSet(metaRs);
// metaRs.close();
String sql = "SELECT * FROM WS_OFFER WHERE ROWNUM <= ?";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setInt(1, 1);
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
}
rs.close();
stmt.close();
conn.close();
}
{
Connection conn = dataSource.getConnection();
// ResultSet metaRs = conn.getMetaData().getTables(null, "ALIBABA", null, new String[] {"TABLE"});
// JdbcUtils.printResultSet(metaRs);
// metaRs.close();
String sql = "SELECT * FROM WS_OFFER WHERE ROWNUM <= ?";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setInt(1, 11);
ResultSet rs = stmt.executeQuery();
rs.next();
rs.close();
stmt.close();
conn.close();
}
}
}
@@ -6,6 +6,7 @@ import java.sql.PreparedStatement;
import java.sql.ResultSet;
import junit.framework.TestCase;
import oracle.jdbc.OracleConnection;
import oracle.jdbc.driver.OraclePreparedStatement;
import com.alibaba.druid.util.JdbcUtils;
@@ -28,10 +29,14 @@ public class TestOraclePreparedStatement extends TestCase {
Connection conn = DriverManager.getConnection(jdbcUrl, user, password);
OracleConnection oracleConn = (OracleConnection) conn;
// ResultSet metaRs = conn.getMetaData().getTables(null, "ALIBABA", null, new String[] {"TABLE"});
// JdbcUtils.printResultSet(metaRs);
// metaRs.close();
int fetchRowSize = oracleConn.getDefaultRowPrefetch();
String sql = "SELECT * FROM WS_OFFER WHERE ROWNUM <= ?";
OraclePreparedStatement oracleStmt = null;
@@ -39,15 +44,15 @@ public class TestOraclePreparedStatement extends TestCase {
oracleStmt = (OraclePreparedStatement) stmt;
oracleStmt.setRowPrefetch(1);
{
stmt.setInt(1, 1);
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
}
rs.close();
oracleStmt.clearDefines();
}
oracleStmt.setRowPrefetch(1000);
@@ -55,7 +60,7 @@ public class TestOraclePreparedStatement extends TestCase {
stmt.setInt(1, 11);
ResultSet rs = stmt.executeQuery();
rs.next();
rs.close();
stmt.close();
}