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

java920 2014-08-25 09:07:22
访问一条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);了吗
...全文
4912 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 18 楼 hjgzj 的回复:
con.prepareStatement("sql语句") 这个确实可以连续使用 最后你要关闭连接 不然会造成数据泄漏
错了 是连接泄漏
  • 打赏
  • 举报
回复
con.prepareStatement("sql语句") 这个确实可以连续使用 最后你要关闭连接 不然会造成数据泄漏
唱歌的后续 2014-08-27
  • 打赏
  • 举报
回复
可以批处理多条sql,但是记住 流程走完了一定要关闭
莫名的默默 2014-08-27
  • 打赏
  • 举报
回复
1.一般数据库访问量大的话,开启连接池 2.开启连接池以后,就像楼上所说,用完关闭。其实后台socket并没有关闭,等待下一次使用。在Java7中try(申请资源){}这种结构,离开时会自动调用close的 3.业务复杂的时候,并不能一次完成所有sql操作,所以用完必须关。
lyangsoft 2014-08-27
  • 打赏
  • 举报
回复
引用 13 楼 sizhouzhou 的回复:
一般是执行完所有在关闭 你可以执行另一个 全部完成然后就关闭
LOVE-漂泊 2014-08-26
  • 打赏
  • 举报
回复
一般是执行完所有在关闭 你可以执行另一个 全部完成然后就关闭
Dylan_f 2014-08-26
  • 打赏
  • 举报
回复
引用 6 楼 magi1201 的回复:
一条SQL语句后连接数据库的Connection必须要关闭吗 建议执行完一次数据库操作,就关闭数据库资源。频繁的话,可以考虑数据库连接池 由连接池初始化一定数量的连接,每次程序跟连接池打交道,不直接跟数据库打交道,这样节省资源 可以不关闭接着访问一条SQL吗 可以,但是先关闭掉上次访问数据库的资源(诸如resultset和statement之类的) 获取一个connection后,每次产生一个Statement,都相当于产生一个游标,每次操作完,便要关闭该statement 否则,如果一直只向数据库索取连接,但不关闭的话,那么数据库的statement连接耗尽时,便会抛出,游标超出最大数量的异常 ORA-01000: maximum open cursors exceeded
+1
S117 2014-08-25
  • 打赏
  • 举报
回复
当然可以了,连接池就是这个原理,关闭是不是真的关闭,只是交个了连接池,以后再用
w_l_o_v_e_c 2014-08-25
  • 打赏
  • 举报
回复
上面说的很清楚了,看来仁兄是新手,建议你可以设断点一步步执行看看数据的变化,这个是很重要的,祝楼主好运
菜鸟大明 2014-08-25
  • 打赏
  • 举报
回复
第一个问题:可以不关闭,用con.commit 提交数据即可。 第二个问题:Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); 一般是用单例模式来赋值Connection的,只要赋值一次就行,后续的就不需要了。
姜小白- 2014-08-25
  • 打赏
  • 举报
回复
一条SQL语句后连接数据库的Connection必须要关闭吗 建议执行完一次数据库操作,就关闭数据库资源。频繁的话,可以考虑数据库连接池 由连接池初始化一定数量的连接,每次程序跟连接池打交道,不直接跟数据库打交道,这样节省资源 可以不关闭接着访问一条SQL吗 可以,但是先关闭掉上次访问数据库的资源(诸如resultset和statement之类的) 获取一个connection后,每次产生一个Statement,都相当于产生一个游标,每次操作完,便要关闭该statement 否则,如果一直只向数据库索取连接,但不关闭的话,那么数据库的statement连接耗尽时,便会抛出,游标超出最大数量的异常 ORA-01000: maximum open cursors exceeded
小灯光环 2014-08-25
  • 打赏
  • 举报
回复
1.Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); 数据库驱动只会加载一次,一般封装DAO会写在静态块里面。 2.访问一条SQL语句后连接数据库的Connection必须要关闭吗 可以不关闭接着访问一条SQL吗 一般操作完数据库需要及时的释放资源,不是执行几条SQL语句的问题,比如写一个批处理,关键是使用完要关闭,比如执行了executeUpdate(),或者遍历完ResultSet,在这个时候才需要关闭。
java920 2014-08-25
  • 打赏
  • 举报
回复
引用 2 楼 huangan0301 的回复:
可以在最后一条sql语句执行完了关闭。保证最后会关闭就行。
谢谢 我要就只要在数据库查询几条SQL语句 我直接用的JDBC 可以查完一条SQL时connection不关闭吗 然后接着查下一条SQL语句吗 还有 Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); 只要写一句吗
java920 2014-08-25
  • 打赏
  • 举报
回复
引用 1 楼 shixitong 的回复:
一般用连接池,自己不写这些
谢谢 我要就只要在数据库查询几条SQL语句 我直接用的JDBC 可以查完一条SQL时connection不关闭吗 然后接着查下一条SQL语句吗 还有 Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); 只要写一句吗
huangan0301 2014-08-25
  • 打赏
  • 举报
回复
可以在最后一条sql语句执行完了关闭。保证最后会关闭就行。
shixitong 2014-08-25
  • 打赏
  • 举报
回复
一般用连接池,自己不写这些
Null1107 2014-08-25
  • 打赏
  • 举报
回复
可以自己写个方法,传入多条语句多个参数,就能实现
lucky_love123 2014-08-25
  • 打赏
  • 举报
回复
访问一条SQL语句后连接数据库的Connection必须要关闭吗 可以不关闭接着访问一条SQL吗 回答:只要保证最后关了就行,比如批量执行的 还有 Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); 只要弄一次就可以了吗 回答:驱动只需用写一次、也在初次的时候加载、初始化、后面就能直接用
sunjianbo1126 2014-08-25
  • 打赏
  • 举报
回复
保证用完就关吧,频繁操作打开关闭影响效率,可以考虑用连接池

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧