using(){}

tianshangyun520 2009-05-17 09:38:32
using(SqlConnection con=new SqlConnection(ConfigurationManager.ConnectionStrin[0].ConnectionString))
{
}
请问这个using代码块怎样理解,代码块里面又可以放哪些内容
...全文
79 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
tianshangyun520 2009-05-18
  • 打赏
  • 举报
回复
讲解得很详细,谢谢大家
chenpan821561675 2009-05-17
  • 打赏
  • 举报
回复
它的主要是系统自动释放资源,不用con.close();
它的里面可以放好多呢,
中年秃头大叔 2009-05-17
  • 打赏
  • 举报
回复
using(SqlConnection con=new SqlConnection(ConfigurationManager.ConnectionStri[0].ConnectionString))
{
con.open()打开后不用con.close()就可以了。系统在using结束时会自动结束的。这样可以减少人为的失误.
}
其它的都可以用using。
例:SqlDataReader.SqlCommand等

myljg 2009-05-17
  • 打赏
  • 举报
回复
抱歉,只回答了你一部分,没注意你还问了"代码块里面又可以放哪些内容".
仔细想想为什么要用using呢?是因为希望在程序的相关代码执行完毕后自动关闭数据库,
所以,需在con.Open()与con.Close()之间执行的所有代码包括con.Open及con.Close都应该放在using(){}的{}内.
beckfun 2009-05-17
  • 打赏
  • 举报
回复
已经有人帮你提这个问题了,详情见:http://topic.csdn.net/u/20090419/12/dc65d2bd-07ca-41a7-adeb-3d3e0951729f.html

在C#中打开数据库连接,对了学这方面的学者来说是一件在简单不过的事情了,但是我看到的是在打开数据库的连接方式中,有的不是放在前面打开,那就是放在最后面来打开连接。解释说:是为了让代码执行好了,在来打开连接等等之内的说都有。谈到这里我想说的是,这个打开方式无论你放在哪里,它肯定先去重试看检查是否连接开启的,是开启的话将会执行下面的操作,反之将抛出错误异常、并告提示你的连接未开启。好了,闲话将到这里,我们来看看最佳的连接方式如下的代码:

using (SqlConnection sqlconn = new SqlConnection(ConfigurationManager.ConnectionStrings["sqlconn"].ToString()))
{
using (SqlCommand sqlcmd = new SqlCommand())
{
//等待请求打开连接
sqlcmd.Connection.Open();

//执行SQL语句
sqlcmd.CommandText = "insert into Example values('aa','bb')";
sqlcmd.Connection = sqlconn;

//返回影响的行数
sqlcmd.ExecuteNonQuery();
}
}
注意:DataAdapter中的用法和Command中的用法有所不同的,DataAdapter中有SelectCommand、UpdateCommand、DeleteCommand、InsertCommand 等等这些属性,而Command中没有,所以DataAdapter中要和那些属性一起结合着用。(实例参考下DataSeT)

看到上面的的实例了;我们就来杂谈下他为什么为最佳的打开连接呢?
1,你们想想看看,我们的计算机要通讯,两台计算机必修进行TCP/IP的三次握手才能让两台机子通讯。可想而之,C#要和数据库之间进行数据传替,当然也要进行数据互通才行。所以说你的打开连接无论放在哪里打开,它将会先来检测是否为连接良好才行。
2,我们直接的打开数据库连接 和 等待执行数据请求打开连接相比,大家应该知道那种打开要好些了吧。很明显的在using析构的使用下,也可以很好的优化数据的传输,在也不会象直接打开那样,没有数据的时候也去连接数据,从而占用我们的资源。
3,如果你认为是放在后面打开可以优化性能的话,我建议你用汇编工具(OD)对他进行反汇编(OD中的trace数据捕捉)数据捕捉,看看是否如此所说。我也是闲得没事中发现的.(呵呵!)
malin2670372 2009-05-17
  • 打赏
  • 举报
回复
[Quote=引用楼主 tianshangyun520 的帖子:]
using(SqlConnection con=new SqlConnection(ConfigurationManager.ConnectionStrin[0].ConnectionString))
{
}
请问这个using代码块怎样理解,代码块里面又可以放哪些内容
[/Quote]
学习。
myljg 2009-05-17
  • 打赏
  • 举报
回复

using(SqlConnection con=new SqlConnection(ConfigurationManager.ConnectionStri[0].ConnectionString))
{
//这里执行相关代码
..........
//代码执行完毕并自动释放con所占用的所有资料,
//就算你不用con.Close(),using也会自动关闭con的资源占用
}


希望对你有帮助

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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