请问一个有关jdbc性能的问题

03-09-14 chinahero
我用二种方法从读数据(60000条数据的表)

1.

long bTime=System.currTime()..;

Class.forName("oracle.jdbc.driver.OracleDriver");

String url = "jdbc:oracle:thin:@127.0.0.1:1521:osn";

String user = "scott";

String password = "tiger";

Connection conn = DriverManager.getConnection(url, user, password);

Statement stmt = conn.createStatement();

String sql = "SELECT * from cat" ;

ResultSet rs=stmt.execuQuery(sql);

while(rs.hastnext()){

... //组装object

}

long eTime=System.currTime..();

System.out.println("cost time="+(eTime-bTime));

2. 用了jdbc2.0中的datasource

DataSource datasource=(Datasource)ic.lookup(...) //通过jndi取Datasource

//读表两次,看时间差距

for(int count=0;count<2;count++)

{

long bTime=System.currTime.();

Connection conn=(DataSource)datasource.getConnection();

.. //后面的写法与1相同

long eTime=System.currTime..();

System.out.println("cost time="+(eTime-bTime));

}

据说第一种写法,每次查询前都要实例化一个类,所以性能会慢,jdbc2.0中引进了Datasource这个东东,是不是就是数据池呢?但是经过我的使用,2方法和1方法的时间没有什么区别,有时2快,有是1快,感觉1好象快一些.

我是多次执行的,特别是对第2种,datasource初始化好后,多次调用读取表记录的操作,时间基本一样,差几百ms

我的理解是不是有问题,数据池不是DataSource这个东东,是不是要把Connection这个对象包在里面才算?

chinahero
2003-09-15 16:54
jcs的我搞定了,这个我要问的

猜你喜欢