Oracle JDBC ResultSet引數測試

深圳gg發表於2018-10-12

用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萬的資料。

相關文章