using在这里用处是什么呢?

jackstrawbelief 2009-12-21 03:41:13
看了别人一段代码。。如下:


public static DataSet Query(string SQLString)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
DataSet ds = new DataSet();
try
{
connection.Open();
SqlDataAdapter command = new SqlDataAdapter(SQLString, connection);
command.Fill(ds, "ds");
}
catch (System.Data.SqlClient.SqlException ex)
{
throw new Exception(ex.Message);
}
return ds;
}
}


问:
1、using在这里起什么作用呢?
2、为什么不加finaly一下,connection.Close()一下呢?

大家说说。。
...全文
166 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
smallmonkeychen 2009-12-22
  • 打赏
  • 举报
回复
个人觉得还是按常规步骤比较好:
1.建立连接
2.打开连接
。。。。。。
3.关闭连接
这样心里踏实。。。。。。。。。
fellatioyzx 2009-12-22
  • 打赏
  • 举报
回复
这年头接技术分越来越难了
1q23111111qqqq 2009-12-22
  • 打赏
  • 举报
回复
释放资源
自动的
避免出现未释放的资源
lijing3333 2009-12-22
  • 打赏
  • 举报
回复
using (SqlConnection connection = new SqlConnection(connectionString))
{
当脱离此区域的时候 释放资源!!
}
bancxc 2009-12-22
  • 打赏
  • 举报
回复
自动释放资源
对于实现了 Idisposable接口 会自动调用 dispose方法
humanli 2009-12-22
  • 打赏
  • 举报
回复
补充一点.using是释放非托管资源.
l171147904 2009-12-21
  • 打赏
  • 举报
回复
大家都回答了。。。占楼!
卧_槽 2009-12-21
  • 打赏
  • 举报
回复
调用后销毁。
hitlcyu19 2009-12-21
  • 打赏
  • 举报
回复
释放资源
nashina 2009-12-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lianshaohua 的回复:]
问:
1、using在这里起什么作用呢?
2、为什么不加finaly一下,connection.Close()一下呢?

1、离开using(){}的时候,自动释放资源,包括异常离开,
2、你也可以用try ...catch...finally来完成,但不如using好用;
[/Quote]

基本就是这个意思;
biny101 2009-12-21
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 freesarge 的回复:]
自动释放使用完毕的资源。尤其在处理资源时,最为实用,可以自动释放刚刚实用过的资源。
[/Quote]321
指间的风 2009-12-21
  • 打赏
  • 举报
回复
自动释放使用完毕的资源。尤其在处理资源时,最为实用,可以自动释放刚刚实用过的资源。
viena 2009-12-21
  • 打赏
  • 举报
回复
B/S项目不推荐这么做,还是手工调用Close好些,Close是释放回连接池
而这样相当于Dispose,连接资源真的被释放掉了,下次得重新创建
而创建连接是很费时费力的~
wartim 2009-12-21
  • 打赏
  • 举报
回复
你在using块外调用connection看看,不能了
namhyuk 2009-12-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wiki14 的回复:]
using程序段结束时conn.Dispose()会被自动调用,而这个方法中也调用了Close()方法


准确地说,using(){}等于 
  try 
  { 
          conn.open(); 
          cmd.executenonquery(); 
  } 
  finally 
  { 
          conn.Dispose(); 
  } 

[/Quote]
就这个意思。所以using()扩号内的对象必须是实现了IDisposable的对象,这样才会在using{}块结束时调用该对象的Dispose()方法。
liherun 2009-12-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 huing 的回复:]
引用 2 楼 lianshaohua 的回复:
问:
1、using在这里起什么作用呢?
2、为什么不加finaly一下,connection.Close()一下呢?

1、离开using(){}的时候,自动释放资源,包括异常离开,
2、你也可以用try ...catch...finally来完成,但不如using好用;


using 更好,代码不会那么长
[/Quote]hehe
huing 2009-12-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lianshaohua 的回复:]
问:
1、using在这里起什么作用呢?
2、为什么不加finaly一下,connection.Close()一下呢?

1、离开using(){}的时候,自动释放资源,包括异常离开,
2、你也可以用try ...catch...finally来完成,但不如using好用;
[/Quote]

using 更好,代码不会那么长
luyysea 2009-12-21
  • 打赏
  • 举报
回复
这样可以及时的释放数据库连接占用的资源。
wiki14 2009-12-21
  • 打赏
  • 举报
回复
using程序段结束时conn.Dispose()会被自动调用,而这个方法中也调用了Close()方法


准确地说,using(){}等于
try
{
conn.open();
cmd.executenonquery();
}
finally
{
conn.Dispose();
}
ztenv 2009-12-21
  • 打赏
  • 举报
回复
问:
1、using在这里起什么作用呢?
2、为什么不加finaly一下,connection.Close()一下呢?

1、离开using(){}的时候,自动释放资源,包括异常离开,
2、你也可以用try ...catch...finally来完成,但不如using好用;
加载更多回复(1)

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧