1. 程式人生 > >Oracle JDBC ResultSet引數測試

Oracle JDBC ResultSet引數測試

用jprofiler和jconsole測試下列四種組合,前三種組合消耗年輕代100M左右,老年代沒影響。第四種組合傷心病狂,年輕代和老年代均消耗400M, 可以檢查一下專案,看有沒有踩雷。 prepareStatement(sql); prepareStatement(sql,ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE); prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); 引數 int type: ResultSet.TYPE_FORWORD_ONLY 結果集的遊標只能向下滾動。 ResultSet.TYPE_SCROLL_INSENSITIVE 結果集的遊標可以上下移動,當資料庫變化時,當前結果集不變。 ResultSet.TYPE_SCROLL_SENSITIVE 返回可滾動的結果集,當資料庫變化時,當前結果集同步改變。 引數 int concurrency: ResultSet.CONCUR_READ_ONLY 不能用結果集更新資料庫中的表。 ResultSet.CONCUR_UPDATETABLE 能用結果集更新資料庫中的表。

jsp程式碼,部署到tomcat下面: <%@page import=“java.sql."%> <%@page import="java.util.”%>

<%@ page session=“false” %> <%! public class TestResultSetType { public void selectDB(String sql){ Connection con = null; PreparedStatement pre = null; ResultSet result = null; try { Class.forName(“oracle.jdbc.driver.OracleDriver”); String url = “jdbc:oracle:thin:@10.10.11.16:1525:orcldb”; String user = “test”; String password = “test”; con = DriverManager.getConnection(url, user, password); //pre = con.prepareStatement(sql); //pre =con.prepareStatement(sql,ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); //pre =con.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE); pre =con.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); result =pre.executeQuery(); while (result.next ()) { result.getInt(“object_id”); result.getString(“object_name”); } }catch (Exception e){ e.printStackTrace(); } finally{ try{ if (result != null) result.close(); if (pre != null) pre.close(); if (con != null) con.close(); } catch (Exception e){ e.printStackTrace(); } } } } %>

<% TestResultSetType testResultSetType = new TestResultSetType(); testResultSetType.selectDB(“select * from test1”); out.print("----------------11---------------------"); %>

Oracle資料庫: create table test1 as select * from dba_objects; 製造出40萬的資料。