【发布时间】:2011-12-29 07:27:16
【问题描述】:
我已经阅读了几篇关于 using 语句的文章,试图了解何时应该使用它。听起来大多数人都认为应该尽可能多地使用它,因为它可以保证处置未使用的对象。
问题是所有示例总是显示如下内容:
using (SqlCommand scmFetch = new SqlCommand())
{
// code
}
这是有道理的,但它只是一小段代码。对数据库执行查询时应该怎么做?全部步骤是什么?它看起来像这样吗:
string sQuery = @"
SELECT [ID], [Description]
FROM [Zones]
ORDER BY [Description] ";
DataTable dtZones = new DataTable("Zones");
using (SqlConnection scnFetchZones = new SqlConnection())
{
scnFetchZones.ConnectionString = __sConnectionString;
scnFetchZones.Open();
using (SqlCommand scmdFetchZones = new SqlCommand())
{
scmdFetchZones.Connection = scnFetchZones;
scmdFetchZones.CommandText = sQuery;
using (SqlDataAdapter sdaFetch = new SqlDataAdapter())
{
sdaFetch.SelectCommand = scmdFetchZones;
sdaFetch.Fill(dtZones);
}
}
if (scnFetchZones.State == ConnectionState.Open)
scnFetchZones.Close();
}
我想知道的是:
• 是否可以嵌套使用 4、5、10 个 using 语句来确保所有对象都被释放?
• 我在什么时候做错了,我应该考虑修改吗?
• 如果由于嵌套 using 语句过多而需要修订,我有哪些选择?
您最终可能会得到一个强大的层次结构,但您的代码应该非常高效,对吧?还是应该只将 SqlDataAdapter 对象放在 using 语句中,并且它会以某种方式确保所有其他对象也被释放?
谢谢。
【问题讨论】:
标签: c# using-statement