首页 新闻 搜索 专区 学院

关于using

0
[已解决问题] 解决于 2011-11-02 09:07

 using (SqlConnection connection = new SqlConnection(connectionString)){}

 有什么好处啊??

呓语的主页 呓语 | 初学一级 | 园豆:90
提问于:2011-11-01 14:46
< >
分享
最佳答案
1

你打开了数据库的链接 那就要关掉数据库的链接并释放其中占用的资源
不然你一个链接 不会体现出来什么问题 但是你要知道你的做的项目可能有好几千甚至更多
人链接 你一直占着资源不放 到一定的程度 数据库链接达到饱和 以后就连不上了
所有 using (SqlConnection connection = new SqlConnection(connectionString)){}
就是你再{}里面执行完以后系统会自动断开数据库的链接并释放资源

希望对你又帮助

唯吴独尊 | 小虾三级 |园豆:707 | 2011-11-01 22:03

确实,很有帮助呢!!我就是在找一个使用它的理由!

呓语 | 园豆:90 (初学一级) | 2011-11-02 08:57

@呓语: 原来楼主是女的 而且比我小 不过你说给你一个理由

那我只能说和这个比较方便 而且安全性比较好 操作简单

其他只能说 个人爱好吧 你说我不用using也可以 但是后面自己 加上关掉和释放的语句是同样的效果

唯吴独尊 | 园豆:707 (小虾三级) | 2011-11-02 09:09

@唯吴独尊: OK OK 明白啦!在这行业刚刚起步,希望大侠们多多指教啊~~

呓语 | 园豆:90 (初学一级) | 2011-11-02 09:12
其他回答(7)
0

用这个你就不必去关闭连接了 ,它会自行关闭连接

January | 园豆:174 (初学一级) | 2011-11-01 14:54

这样啊,可是在SqlHelper 里,就不可能实现只实例化一次connection对象咯?

 

支持(0) 反对(0) 呓语 | 园豆:90 (初学一级) | 2011-11-01 14:59

@呓语: 可以用静态的撒

支持(0) 反对(0) 火车叨位去丶 | 园豆:2 (初学一级) | 2011-11-01 15:34

@呓语:我也不是很了解 你要做什么呢 好多ASP.NET 示例代码都是使用这个写法,先用着呗

支持(0) 反对(0) January | 园豆:174 (初学一级) | 2011-11-01 15:40

@yuki tang: 使用静态的?你试试,并发一上来,不停的报错。

支持(0) 反对(0) webaspx | 园豆:1987 (小虾三级) | 2011-11-01 16:42
0

执行完成自动关闭链接

火车叨位去丶 | 园豆:2 (初学一级) | 2011-11-01 15:33
0

using一个实现了IDisposable接口的类,可以在using的scope结束时自动调用Dispose方法。比如:

class A : IDisposable
{
public void Dispose()
{
//do something
}
}

//然后
using(A a = new A())
{
//你的代码
} //在这里会自动调用a.Dispose();
//这样可以保证资源被及时释放掉了
水牛刀刀 | 园豆:6350 (大侠五级) | 2011-11-01 16:49
1

正如楼上所说,对于实现了IDisposable接口的类,如果你不想用代码自己去释放他们的资源的话(例如调用Close()方法去释放资源),可以用Using来自动调用类的Dispose方法去释放资源。

Vincent.J | 园豆:215 (菜鸟二级) | 2011-11-01 17:01
0

不用写close了

喬喬AI | 园豆:996 (小虾三级) | 2011-11-01 18:03
0

建议不要使用using嵌套,使用try ...finally

小小刀 | 园豆:1991 (小虾三级) | 2011-11-01 20:10
0

使用using 释放资源要有所保留地使用。

加载资源和释放资源都是有成本的。如果你频繁的释放和加载资源会很影响你的程序运行速度。

“恰当的时候加载,恰当的时候释放。”

如果很多操作可以共用一个SqlConnection connection实例,建议保留改实例引用。

把握好加载和释放的时机,比如应用程序启动的时候就不适合同时也加载数据库,可以推迟到启动完成后加载,否则会形成速度瓶颈,影响用户体验。

胡屯 | 园豆:714 (小虾三级) | 2011-11-02 09:09
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册