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万的数据。

你可能感兴趣的:(j2ee,java基础)