黑马程序员技术交流社区
标题:
数据库连接的资源释放
[打印本页]
作者:
周大俊
时间:
2011-11-2 23:10
标题:
数据库连接的资源释放
两种方式,using 和try\finally,通常我会使用前者,但同时有不少人选择后者,两者有木有什么差异呢?
作者:
10642491
时间:
2011-11-2 23:53
本帖最后由 10642491 于 2011-11-2 23:54 编辑
用MSIL来看真正的底层代码,就可以看到Using本身实际就是try...catch....finally,喜欢using是因为能少写几个代码呵呵
作者:
郑文
时间:
2011-11-3 02:04
看上去表面using减少了代码 其实using 是自动生成try finnly 如果 ADO.NET中的对象有多个对象的时候 using生成的try finnly会嵌套 ,生成多个try finnlly. 有多少个对象就有几个try finally .如果自己使用try finally,就用一个就够了. 而且using只能用于实现IDispose的对象 ,而try finally任何对象都行都能。 实际上对于ado.net的那些和数据库连接有关的对象,用using 和 try finally都一样 取决于个人习惯问题.
作者:
黄朝辉
时间:
2011-11-3 08:39
using 主要是实现了IDispose接口,用完后马上释放。
作者:
周大俊
时间:
2011-11-3 09:40
soga,学习了,3Q!不过我也用Reflector看,嘿嘿
作者:
xiaobai198611
时间:
2011-11-3 09:53
1.确保释放数据库连接资源的两种方式如下:
a.使用try...catch...finally语句块,在finally块中关闭连接;
b.使用using语句块,无论如何退出,都会自动关闭连接;
2.最好的方法是组合使用以上两种方式。
代码如下:
using System;
using System.Data.SqlClient;
namespace Magci.Test.DataAccess
{
class Program
{
static void Main(string[] args)
{
string source = @"server=xiaobai\sqlexpress; integrated security=SSPI; database=msdb";
SqlConnection conn = null;
//使用try块处理
try
{
conn = new SqlConnection(source);
conn.Open();
//Do something
}
catch (Exception e)
{
//Do something with the exception
}
finally
{
conn.Close();
}
//使用using块处理
using (conn = new SqlConnection(source))
{
conn.Open();
//Do something
}
//两种组合方式
try
{
using (conn = new SqlConnection(source))
{
conn.Open();
//Do something
conn.Close();
}
}
catch (Exception e)
{
//Do something with the exception
}
}
}
}
复制代码
作者:
沙铁健
时间:
2011-11-3 10:19
看个人喜好 我就是比较喜欢用using了 直观上来讲是一样的了 但是细看 就不一样了 ...呵呵
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2