re: JDBC查询动态封装 cccp21 2009-02-16 21:57
@银河使者
你是说在web页中接受并使用ResultSet然后再在该页中关闭ResultSet和数据库连接?
还是说接受并用完ResultSet后关闭ResultSet并调用另一个函数关闭连接?
一般每个Connection都是线程独享的——那为什么我以前看到很多取数据源连接的方法要保证之生成一个数据源对象?比如:
private static DataSource ds = null;
private static Object Lock = new Object();
/**
* 生成DataSource
* @return 返回一个DataSource对象
*/
public static DataSource gainDataSource(){
try {
if(ds == null){
synchronized(Lock){
if(ds == null){
InitialContext ctx = new InitialContext();
ds = (DataSource)ctx.lookup("数据源名");
}
}
}
} catch (NamingException e) {e.printStackTrace();}
return ds;
}
这有什么好处呢?
re: JDBC查询动态封装 cccp21 2009-01-31 10:57
@银河使者
我觉得这个思路不错是因为这样可以在同一个方法中建立、关闭数据库连接。之前曾经在关闭数据库连接这个问题上吃过亏。
如果在应用中直接访问ResultSet,关闭数据库连接有点麻烦——如果之前就关闭了数据库连接,那么应用在ResultSet中就访问不到数据,而不关闭的话,就要在应用完成后关闭数据库连接,这里就会有些混乱。你有什么好主意呢?
re: JDBC查询动态封装 cccp21 2009-01-29 11:31
@银河使者
请注意,是条件的个数是动态的,PreparedStatement只是让开发者设置参数值,但是参数个数还是固定的。
把每行放在一个Map中,再把结果集放在Vector中,是为了把JDBC与应用分离开,我开始的时候也和你一样,后来才听别人指出这一点的。
牛!
寒松问的版本应该是指sun的多少版本——1.4?1.5?1.6?