我有一个包含调用存储过程的方法的类。其中一些存储过程返回其他存储过程没有的数据结构。以下是其中一种方法的示例。
public DataTable GetProductData(int productID)
{
DataTable dataTable = new DataTable();
using (SqlDataAdapter sqlDataAdapter = new SqlDataAdapter())
{
using (SqlConnection sqlConn = new SqlConnection("CONNECTIONSTRING"))
{
using (SqlCommand sqlCmd = new SqlCommand("getProductData", sqlConn))
{
sqlCmd.CommandType = CommandType.StoredProcedure;
sqlCmd.Parameters.AddWithValue("@ID", productID);
sqlConn.Open();
sqlDataAdapter.Fill(dataTable);
}
}
}
return dataTable;
}
当需要数据访问时,此方法由另一个程序使用。以下是使用上述方法的方法示例...
public DataTable GetProductInfoFromDatabase(int productID)
{
DataLibrary dl = new DataLibrary();
return dl.GetProductData(productID);
}
我想知道的是,一旦检索到数据,我应该如何处理dl
变量。垃圾收集是否会处理它,还是应该在定义GetProductData
方法的类中实现IDisposable? using
语句是否足够?
答案 0 :(得分:3)
除非您的班级持有非托管资源或其他IDisposable
个对象; 没有,您不需要自己实施IDisposable
。空Dispose
方法会为您购买 nothing 。
在您提供的代码中,using
语句就足够了。在DataLibrary
中创建的GetProductInfoFromDatabase
对象将由GC按预期收集。