连结池问题

04-01-06 daimt
import java.sql.SQLException;

import java.sql.*;

import javax.sql.DataSource;

import org.apache.struts.util.GenericDataSource;

public class DBInit{

public Connection initDB(){

try {

GenericDataSource ds = new GenericDataSource();

ds.setDriverClass("oracle.jdbc.driver.OracleDriver");

ds.setUrl("jdbc:oracle:thin:@192.168.1.16:1521:mgr");

ds.setUser("9311");

ds.setPassword("9311");

ds.setMinCount(1);

ds.setMaxCount(2);

ds.setAutoCommit(false);

ds.open();

return ds.getConnection();

} catch (SQLException e) {

System.out.println(e.toString());

return null;

}

}

public static void main(String[] args){

DBInit db = new DBInit();

Connection con = db.initDB();

Statement sta = null;

ResultSet rs = null;

try{

sta = con.createStatement();

rs = sta.executeQuery("select * from scaffold where scaffold_id < 10");

while(rs.next()){

System.out.println(rs.getString("SCAFFOLD_NAME"));

}

con.close();

}catch(Exception e){

System.out.println(e.toString());

}

}

}

我这样调用 Connection 的 close() 方法是不是就直接把Connection 的对象就关闭了?如果是,我想把它释放到池中并不关闭应当如何去做?

wzbwambition
2004-01-07 10:36
你这样写应该就是放到池里了,而不是真正的close();

happlyin
2004-01-15 15:50
jdbc中的java.sql.Connection只是一个接口。

不同的数据库厂商提供的jdbc驱动包,提供自己的实现。

而连接池实现的时候,例如,PooledConnection实现了java.sql.Connection,但是它的close方法的实现就是把连接返回到数据库连接池中。

其实,取得的连接和返回到数据库连接池中的真正连接类型就是不同数据库厂商所提供的连接,只不过其父类是java.sql.Connection

这样说,不知道说清楚了吗?

daimt
2004-01-15 17:39
针对上面的代码,是把Connection与数据库断开,

还是没有断开以供以后再使用?

d_1979
2004-02-12 17:39
你可以到数据库后台用sp_who去看一下连接是否断开就行了.

在关闭后应该是保持的,否则连接池就不起作用了

猜你喜欢