conn != null 和 conn.isClosed 的区别

问题描述

conn != null 和 conn.isClosed 的区别关闭数据库连接在不同的代码中有以下两种写法//写法1if(conn != null) conn.close();//写法2if(conn.isClosed()) conn.close();请问哪位大哥知道这两种的区别,小弟先谢谢了

解决方案

说一下这两段代码的区别:1、conn != null 这个是不确定上面的connection是否被初始化而判断的,因为很多时候写代码,使用懒加载模式,一般是先定义一个Connection conn=null,使用的时候才去初始化它的对象,这样可以减少内存的浪费。这个时候如果不确定conn是否被初始化的时候,最好在关闭前加上conn != null判断,不然直接关闭conn有可能报空指针错误。2、conn.isClosed() 这个是判断当前连接是否被关闭,这个首先要保证Connection已经生成实例了。从程序的完善的角度上来看,在关闭连接的时候,最好两个都判断一下:if(conn!=null&&!conn.isClosed()){ conn.close(); }
解决方案二:
同意楼上//写法2if(conn.isClosed()) conn.close(); 这个写法首先是有问题的,如果conn此时尚未实例化,会报NPE,推荐使用if(conn!=null&&!conn.isClosed()){ conn.close();}
解决方案三:
conn.isclosed是说明conn已经被初始化过了 也就是有了实例 只是不知道开着没开着 但是conn!=null是看这个conn有没有被实例华出来 所以不同。
解决方案四:
conn!=null//在heap里有没有一个实现Conncetion的对象在conn.isClosed()//conn对象有没有关闭。

时间: 2024-10-25 03:04:50

conn != null 和 conn.isClosed 的区别的相关文章

asp(vbs)Rs.Open和Conn.Execute的详解和区别及&H0001的说明

1. Rs.Open SQL,Conn,A,B,C 2. Conn.Execute(SQL,RowsAffected,C) 一.Conn.Execute(SQL,RowsAffected,C) 参数含义: SQL的值可以是SQL语句.表名.存储过程名,也可以是数据提供者所能接受的任意字符串.为了提高性能,最好为C参数指定合适的值 可选参数RowsAffected 1.一个Insert.Update或Delete查询执行以后,RowsAffected返回所影响的数目,这些查询会返回一个关闭的Rec

javascript中null和undefined判断和区别分析

一时间不好回答,特别是undefined,因为这涉及到undefined的实现原理.于是,细想之后,写下本文,请各位大侠拍砖. 总所周知:null == undefined 但是:null !== undefined 那么这两者到底有啥区别呢? 请听俺娓娓道来... null 这是一个对象,但是为空.因为是对象,所以 typeof null 返回 'object' . null 是 JavaScript 保留关键字. null 参与数值运算时其值会自动转换为 0 ,因此,下列表达式计算后会得到正

MYsql中NULL与空字符串空区别详解

对于SQL的新手,NULL值的概念常常会造成混淆,他们常认为NULL与MySQL空字符串是相同的事.情况并非如此.例如,下述语句是完全不同的:MySQL> INSERT INTO my_table (phone) VALUES (NULL);  代码如下 复制代码 mysql> INSERT INTO my_table (phone) VALUES ('');   这两条语句均会将值插入phone(电话)列,但第1条语句插入的是NULL值,第2条语句插入的是空字符串.第1种情况的含义可被解释为

JAVA中isEmpty和null以及""的区别

这是一个比较容易混淆的概念,为了弄清楚这个问题,最好的方法当然是写程序来验证,上代码吧~~: /** * */ package JavaTest; public class TestNull { /** * @param args */ public static void main(String[] args) { String a = new String(); String b = ""; String c = null; if(a.isEmpty()) { System.out

JavaScript Undefined,Null类型和NaN值区别_基础知识

一 Undefined 类型 只有一种值 undefined 以下三种情况typeof 返回类型为undefined 1. 当变量未初始化时 2. 变量未定义时 3. 函数无明确返回值时(函数没有返回值时返回的都是undefined) undefined 并不等同于未定义的值 typeof 并不真正区分是否是未定义 看以下示例代码: var oTemp; alert(typeof oTemp); // outputs "undefined" alert(typeof oTemp2);/

php中Null 空 与0值区别分析

例子.  代码如下 复制代码 <?php $test=0; if($test==''){  echo '<br />在php中,0即为空'; //被输出 } if($test===''){  echo '<br />在php中,0即为空'; //不被输出 } if($test==NULL){  echo '<br />在php中,0即为空'; //被输出 } if($test===NULL){  echo '<br />在php中,0即为空'; //不

关于 Conn.Dispose() 的困惑

问题描述 db.DisposeConn();if(db.Conn!=null){db.Conn.Dispose();Response.Write(db.Conn==null);}这段代码,其中DisposeConn()方法就是Conn.Close();Conn.Dispose();一起可是为什么后来的Response.Write结果却总是False?? 解决方案 解决方案二:是不是如下所说:conn.close()关闭连接conn.dispose()把连接放释放回连接池该文章转载自网络大本营:h

Java中JDBC事务与JTA分布式事务总结与区别_java

Java事务的类型有三种:JDBC事务.JTA(Java Transaction API)事务.容器事务.常见的容器事务如Spring事务,容器事务主要是J2EE应用服务器提供的,容器事务大多是基于JTA完成,这是一个基于JNDI的,相当复杂的API实现.所以本文暂不讨论容器事务.本文主要介绍J2EE开发中两个比较基本的事务:JDBC事务和JTA事务. JDBC事务 JDBC的一切行为包括事务是基于一个Connection的,在JDBC中是通过Connection对象进行事务管理.在JDBC中,

java null关键字分析说明

null是代表不确定的对象   Java中,null是一个关键字,用来标识一个不确定的对象.因此可以将null赋给引用类型变量,但不可以将null赋给基本类型变量.   比如:int a = null;是错误的.Ojbect o = null是正确的.   Java中,变量的适用都遵循一个原则,先定义,并且初始化后,才可以使用.我们不能int a后,不给a指定值,就去打印a的值.这条对对于引用类型变量也是适用的.   有时候,我们定义一个引用类型变量,在刚开始的时候,无法给出一个确定的值,但是不