SqlDataReader sdr=null;
SqlConnection conn;
try{
sdr=cmd.ExecuteReader();
conn=new SqlConnection("sfdsl");}catch{
//////
}finally{
sdr.Close();
conn.Close();//这里报错误!!
}两个对象的区别就是一个给了个NULL一个没给;;
如果把两个对象的close放到try{}里面就不回出错!!
那么我是不是可以认为sdr和conn在退出try{}就被释放了??
SqlConnection conn;
try{
sdr=cmd.ExecuteReader();
conn=new SqlConnection("sfdsl");}catch{
//////
}finally{
sdr.Close();
conn.Close();//这里报错误!!
}两个对象的区别就是一个给了个NULL一个没给;;
如果把两个对象的close放到try{}里面就不回出错!!
那么我是不是可以认为sdr和conn在退出try{}就被释放了??
解决方案 »
- 请教:如何在listview中第一列添加ID标识
- treeview控件当添加新节点的时候,如何是的节点 可见和选中状态??
- 关于.net framework2.0、3.5和4.0
- 加入参考失败
- PictureBox问题
- 请教关于Request取值的问题
- Process文件名应该怎么写?急!!
- 求《C# 线程参考手册》书的源代码,或者指明可下载地
- 关于WEB用户操作验证问题
- 插入数据库的问题
- 加急在线:特简单(http://localhost/LinSoft/javas/dd.htm)与(C:\Inetpub\wwwroot\LinSoft\javas\dd.htm)有什么不同
- 我的打印代码?怎么会事?
==========>
if( conn.State = ConnectionState.Open )
conn.Close();
问题就在这里,你在try里面根本就没有实例化连接或者打开连接,在finally 里如何能关闭.
if( conn.State = ConnectionState.Open )
conn.Close();或者就别管了......交给GC 帮你关
conn=new SqlConnection("sfdsl");
怎么能先执行语句,再创建连接呢。
SqlConnection conn=null;
conn.close();另外:
SqlConnection conn;
try{
conn=new SqlConnection("sfdsl");}catch{
//////
}finally{
conn.Close();//这里报错误!!
}
为什么?我明明已经在try{}里面有了个实例,为什么finally{}这里不能使用conn.close();提示是conn没有实例化!!!
try{}里面的代码没问题,所以在这里不用去考虑catch{}
我只是奇怪两种写法,一个给个null就可以编译通过,不给就报错误!!
SqlDataReader sdr=null;
sdr.close();
或者
SqlDataReader sdr;
sdr.close();//这里报错还有就是,,我明明在try{}里面已经conn=new SqlConnection("sfdsl");
那么就应该可以使用conn.close()
它不会管conn=new SqlConnection("sfdsl");这句,对finally来说conn尚未实例化,所以需要改成SqlConnection conn=null;
而且在finally里conn和sdr最好先判断是否是null这是我自己的理解,因为如果conn在try内定义的话,甚至会说没这个变量
不知道有没有说错
当SqlConnection conn做为类中的数据成员的时候,则没有上面的问题!!