关于c#中ado.net的一些问题

1、除了sqlconnection对象,我知道用后一定要关闭之外,那么其他的如sqlcommand,sqlreader,dataset,dataadapter用后是否需要... 1、除了sqlconnection对象,我知道用后一定要关闭之外,那么其他的如sqlcommand,sqlreader,dataset,dataadapter用后是否需要关闭呢?
2、我在网上看视频讲解,几乎每实例化一个对象就using一下,using了很多层,有必要吗,就把sqlconnection这里using 一下不行吗?
3、还有我看杨中科老师的讲解,就是喜欢全部使用using方法来处理连接和释放的问题,请教using方法是否等价于try catch finall方法呢?如果数据库连接失败,using能抛出异常吗,一般使用哪种方法来处理这种需要使用后释放的比较好呢?
展开
 我来答
哲事姓无
2013-02-06 · TA获得超过1176个赞
知道小有建树答主
回答量:903
采纳率:100%
帮助的人:437万
展开全部
DataSet是一个数据容器,仅仅用来保存数据,不使用数据库连接,所以不需要关闭
DataAdapter一般作为数据填充器来使用,它需要使用到Connection对象,但是在它内部使用Connection时,如果为open状态,则使用后保存open状态,如果原来为close状态,则使用时open,使用完成后close,使connection对象在使用前与使用后保存相同状态,所以使用DataAdapter时一般不需要操心数据连接的事。

而SqlDataReader的Close或是Dispose方法内有释放资源方法,虽然垃圾回收机制会自动收回,但是建议显示释放一下。
SqlCommand的Dispose方法看了一下没做什么事,不释放应该没有什么问题。还是仍然建议使用完后释放一下,因为内部代码可能会有变化的。
是不是使用using有一个前提,不是所有的对象都能使用using。只有实现了IDisposable接口的对象才能使用using。IDisposable接口唯一的方法就是Dispose,该方法主要供对象释放非托管资源使用。
而using时就是try finally的简写。 finally中做的事就是调用对象有Dispose方法,然后如果有异常的话,继续抛出异常。
所以在可以使用using的时候就使用using吧,会方便一些。
小妻丐
2013-02-06 · TA获得超过112个赞
知道小有建树答主
回答量:274
采纳率:0%
帮助的人:168万
展开全部
第一个问题 sqlcommand,sqldatareader也需要关闭,dataset和dataadapter不需要关闭。
第二个问题 不是每个对象实例化都要using 只用在同一个类中 using一次就可以了 在不同类 每次引用都要引用命名空间的。
第三个问题 using不是方法try catch finally 也不是方法
using是引用命名空间的
try catch finall 作异常处理的
try
{这个里面把容易出现异常的代码写在这里}
catch(Exception ex)//添加Exception ex 当出现异常时报异常情况
{
MessageBox.Show(ex.Message);
}
finall
{
里面写关闭方法 // 不论出现异常否都会关闭各种链接
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e1abcca7
2013-02-06 · TA获得超过163个赞
知道小有建树答主
回答量:372
采纳率:100%
帮助的人:203万
展开全部
using()
{

}
这样写不用关闭,系统会自动释放
sqlconnection con=new sqlconnection("");
这样就要主动去释放
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
duoduo__1347
2013-02-06 · TA获得超过148个赞
知道答主
回答量:237
采纳率:0%
帮助的人:79.4万
展开全部
楼上正确的,不过一般数据库取数据都不关的吧,反正我是没关过
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式