急!!!几个java连接mysql问题!!!

timfly 发布于 2010/12/09 14:27
阅读 968
收藏 2

【Gopher China万字分享】华为云的Go语言云原生实战经验!>>>

对Java连接MySQL,我有几个问题,请高手指点:
1。我知道“一个connection对象可以创建任意多个Statement对象”,那么这样做有什么缺点嘛?推荐这样做吗?为什么?
2。在connection对象创建Statement对象,并产生ResultSet结果集后,先关闭了connection对象,这时ResultSet结果还能用吗?Statement对象和ResultSet对象会自动close吗?
3。Statement对象产生ResultSet结果集后,先关闭了Statement对象,这时ResultSet结果还能用吗?ResultSet对象会自动close吗?
4。如果服务器本身支持数据库连接池,请问是推荐自己写管理数据库连接池的JavaBean还是用服务器提供的,理由分析?
请高手们赐教!感谢!

加载中
0
禹帆
禹帆

创建对象顺序:Connectin->Statement->ResultSet

关闭对象顺序就得反过来。

0
timfly
timfly

引用来自#2楼“禹帆”的帖子

创建对象顺序:Connectin->Statement->ResultSet

关闭对象顺序就得反过来。

 恩。我刚测试了一下:

2。connection关闭了以后,Statement对象和ResultSet对象都会自动close。所以也都不可用了。

3。Statement对象关闭后,ResultSet对象也会自动close。

所以关键是1和4。我好像看到一本书上说单个Connection对象创建太多的Statement对象会使系统很不稳定,不知道是不是?请高手详解。

0
禹帆
禹帆

1.当你创建了几个Statement,如果其中一个地方关闭了Connection,那么其他几个statement就不能用了。

2.我测试下

 public static void main(String[]agrs) throws SQLException{
        Connection conn = getConnection();
        Statement stmt = conn.createStatement();       
        ResultSet rs = stmt.executeQuery("select * from t_user");
        conn.close();
       //stmt.close()   

    System.out.println(rs);
       
    }

当connection关闭后ResultSet还可以用、那么意味着ResultSet 不随着 connection的关闭而关闭。statement 关闭后resultSet也是有值的。应该和前面同理。

返回顶部
顶部