关闭cursor的几个注意点

摘要:
对关闭cursor的案例:案例1:CursormCursor=query(...);关闭方法:最好用Try{......}finally{If(mCursor!=null)mCursor.close();}因为可能会在关闭cursor前直接return,那么这个cursor就没有被关闭。网上找到一个比较有趣的关于return和finally谁先执行的回答:可以形象的说,方法在顺序化的一直往下走,走着走着,发现了Rerurn,它知道它快活不下去了,临死前.他就去找finally,让finally把事情做完.这种情况在Debug的时候比较明显,走到Return所在行,就进finally,然后在回到Return,做返回.案例2:CursormCursor=query(…反正用完都要关闭,要注意点~~

对关闭cursor的案例:

案例1:

Cursor mCursor = query(...);

关闭方法:最好用

Try{
    ......
}finally{
   If(mCursor != null)
      mCursor.close();
}

因为可能会在关闭cursor前 直接return,那么这个cursor就没有被关闭。而finally中的语句,不管前面是否return,都会执行到!

网上找到一个比较有趣的关于returnfinally 谁先执行的回答:

可以形象的说,方法在顺序化的一直往下走,
走着走着,发现了Rerurn(并未执行),它知道它快活不下去了,临死前.他就去找finally,让finally把事情做完.
这种情况在Debug的时候比较明显,走到Return所在行,就进finally,然后在回到Return,做返回.

案例2:

Cursor mCursor =query(…..);
    ......
mCursor =query(…);
if(mCursor != null)
   mCursor.close();

这种情况也是cursor没有关闭,因为查询了2次,但是只关闭了1次。这个出现的情况比较少,但是也是个陷阱。

反正用完都要关闭,要注意点~~

免责声明:文章转载自《关闭cursor的几个注意点》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇React 还是 Vue: 你应该选择哪一个Web前端框架?odoo环境搭建下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

算法总结—深度优先搜索DFS

深度优先搜索(DFS) 往往利用递归函数实现(隐式地使用栈)。 深度优先从最开始的状态出发,遍历所有可以到达的状态。由此可以对所有的状态进行操作,或列举出所有的状态。 1.poj2386 Lake Couting 题意:八连通被认为连接在一起,求总共有多少个水洼? Sample Input: 10 12 W........WW. .WWW.....WWW...

@Bean 的用法

@Bean是一个方法级别上的注解,主要用在@Configuration注解的类里,也可以用在@Component注解的类里。添加的bean的id为方法名 定义bean 下面是@Configuration里的一个例子 1 @Configuration 2 public classAppConfig { 3 4 @Bean 5 publicTrans...

存储过程语法

CREATE PROCEDURE 创建存储过程,存储过程是保存起来的可以接受和返回用户提供的参数的 Transact-SQL 语句的集合。可以创建一个过程供永久使用,或在一个会话中临时使用(局部临时过程),或在所有会话中临时使用(全局临时过程)。也可以创建在 Microsoft SQL Server启动时自动运行的存储过程。 语法 CREATE PROC...

When to close cursors using MySQLdb

http://stackoverflow.com/questions/5669878/when-to-close-cursors-using-mysqldb I'm building a WSGI web app and I have a MySQL database. I'm using MySQLdb, which provides cursor...

【oracle】cursor 概念,cursor经典例子

1118-01 cursor 概念,经典例子类型1.隐式游标2.显式游标3.ref cursor4.sysref cursor 定义1.隐式游标无需定义,select语句即为隐式游标 2.显式游标cursor <cursor>[(<param_list>)]is <select_statement>;说明:2.1 定义时...

守护线程会不会执行finally?默认情况new thread怎么样确定守护状态?

finally throw return 中,线程的状态及interrupt 守护线程在退出的时候并不会执行finnaly块中的代码 线程池造成服务器内存泄漏 中所述,新建线程默认上使用建立线程时的当前线程所处的守护状态 本文予以验证: package fin; /** * Created by joyce on 2019/12/16. */ pub...