Code Bye

访问一条SQL语句后连接数据库的Connection必须要关闭吗

 

访问一条SQL语句后连接数据库的Connection必须要关闭吗 可以不关闭接着访问一条SQL吗
可以直接  con.prepareStatement(“sql语句”)
还有 Class.forName(“oracle.jdbc.driver.OracleDriver”).newInstance();  只要弄一次就可以了吗  
接着连接数据库就不需要Class.forName(“oracle.jdbc.driver.OracleDriver”).newInstance()和DriverManager.getConnection(URL, USER, PWD);了吗

一般用连接池,自己不写这些
可以在最后一条sql语句执行完了关闭。保证最后会关闭就行。
引用 1 楼 shixitong 的回复:

一般用连接池,自己不写这些

 谢谢 我要就只要在数据库查询几条SQL语句 我直接用的JDBC   可以查完一条SQL时connection不关闭吗  然后接着查下一条SQL语句吗  还有  Class.forName(“oracle.jdbc.driver.OracleDriver”).newInstance();    只要写一句吗

引用 2 楼 huangan0301 的回复:

可以在最后一条sql语句执行完了关闭。保证最后会关闭就行。

 谢谢 我要就只要在数据库查询几条SQL语句 我直接用的JDBC   可以查完一条SQL时connection不关闭吗  然后接着查下一条SQL语句吗  还有  Class.forName(“oracle.jdbc.driver.OracleDriver”).newInstance();    只要写一句吗 


20分
1.Class.forName(“oracle.jdbc.driver.OracleDriver”).newInstance(); 
数据库驱动只会加载一次,一般封装DAO会写在静态块里面。 

2.访问一条SQL语句后连接数据库的Connection必须要关闭吗 可以不关闭接着访问一条SQL吗
一般操作完数据库需要及时的释放资源,不是执行几条SQL语句的问题,比如写一个批处理,关键是使用完要关闭,比如执行了executeUpdate(),或者遍历完ResultSet,在这个时候才需要关闭。


20分
一条SQL语句后连接数据库的Connection必须要关闭吗 
    建议执行完一次数据库操作,就关闭数据库资源。频繁的话,可以考虑数据库连接池
    由连接池初始化一定数量的连接,每次程序跟连接池打交道,不直接跟数据库打交道,这样节省资源
可以不关闭接着访问一条SQL吗
    可以,但是先关闭掉上次访问数据库的资源(诸如resultset和statement之类的)

获取一个connection后,每次产生一个Statement,都相当于产生一个游标,每次操作完,便要关闭该statement
否则,如果一直只向数据库索取连接,但不关闭的话,那么数据库的statement连接耗尽时,便会抛出,游标超出最大数量的异常 ORA-01000: maximum open cursors exceeded 

当然可以了,连接池就是这个原理,关闭是不是真的关闭,只是交个了连接池,以后再用
保证用完就关吧,频繁操作打开关闭影响效率,可以考虑用连接池
访问一条SQL语句后连接数据库的Connection必须要关闭吗 可以不关闭接着访问一条SQL吗
回答:只要保证最后关了就行,比如批量执行的
还有 Class.forName(“oracle.jdbc.driver.OracleDriver”).newInstance();  只要弄一次就可以了吗  
回答:驱动只需用写一次、也在初次的时候加载、初始化、后面就能直接用
可以自己写个方法,传入多条语句多个参数,就能实现
第一个问题:可以不关闭,用con.commit 提交数据即可。
第二个问题:Class.forName(“oracle.jdbc.driver.OracleDriver”).newInstance();  一般是用单例模式来赋值Connection的,只要赋值一次就行,后续的就不需要了。
上面说的很清楚了,看来仁兄是新手,建议你可以设断点一步步执行看看数据的变化,这个是很重要的,祝楼主好运
一般是执行完所有在关闭
你可以执行另一个  
全部完成然后就关闭
引用 6 楼 magi1201 的回复:

一条SQL语句后连接数据库的Connection必须要关闭吗 
    建议执行完一次数据库操作,就关闭数据库资源。频繁的话,可以考虑数据库连接池
    由连接池初始化一定数量的连接,每次程序跟连接池打交道,不直接跟数据库打交道,这样节省资源
可以不关闭接着访问一条SQL吗
    可以,但是先关闭掉上次访问数据库的资源(诸如resultset和statement之类的)

获取一个connection后,每次产生一个Statement,都相当于产生一个游标,每次操作完,便要关闭该statement
否则,如果一直只向数据库索取连接,但不关闭的话,那么数据库的statement连接耗尽时,便会抛出,游标超出最大数量的异常 ORA-01000: maximum open cursors exceeded 

  +1

可以批处理多条sql,但是记住  流程走完了一定要关闭
引用 13 楼 sizhouzhou 的回复:

一般是执行完所有在关闭
你可以执行另一个  
全部完成然后就关闭

1.一般数据库访问量大的话,开启连接池
2.开启连接池以后,就像楼上所说,用完关闭。其实后台socket并没有关闭,等待下一次使用。在Java7中try(申请资源){}这种结构,离开时会自动调用close的
3.业务复杂的时候,并不能一次完成所有sql操作,所以用完必须关。
 con.prepareStatement(“sql语句”)
这个确实可以连续使用

最后你要关闭连接 不然会造成数据泄漏

引用 18 楼 hjgzj 的回复:

 con.prepareStatement(“sql语句”)
这个确实可以连续使用

最后你要关闭连接 不然会造成数据泄漏

错了 是连接泄漏


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明访问一条SQL语句后连接数据库的Connection必须要关闭吗