using (SqlConnection cn = new SqlConnection(CONNECTION_STRING))
{ cn.Open(); SqlDataAdapter da =GetSqlDataAdapter(cn);
}
static SqlDataAdapter GetSqlDataAdapter(SqlConnection cn)
{
string strSQL;
strSQL = "SELECT OrderID, ProductID, Quantity, UnitPrice " +
"FROM [Order Details] WHERE OrderID = @OrderID " +
"ORDER BY ProductID;";
SqlDataAdapter da = new SqlDataAdapter(strSQL, cn);
da.SelectCommand.Parameters.AddWithValue("@OrderID", ORDER_ID);
return da;
} }
这是ado。net的例子,我很奇怪其中的using范围
在using中使用了SqlDataAdapter方法,而SqlDataAdapter方法在using的范围外,那么这里的using自动释放资源功能释放延伸到SqlDataAdapter方法中,因为using的释放应该在使用完SqlDataAdapter方法后
很不明白这里的using对SqlDataAdapter方法的影响
{ cn.Open(); SqlDataAdapter da =GetSqlDataAdapter(cn);
}
static SqlDataAdapter GetSqlDataAdapter(SqlConnection cn)
{
string strSQL;
strSQL = "SELECT OrderID, ProductID, Quantity, UnitPrice " +
"FROM [Order Details] WHERE OrderID = @OrderID " +
"ORDER BY ProductID;";
SqlDataAdapter da = new SqlDataAdapter(strSQL, cn);
da.SelectCommand.Parameters.AddWithValue("@OrderID", ORDER_ID);
return da;
} }
这是ado。net的例子,我很奇怪其中的using范围
在using中使用了SqlDataAdapter方法,而SqlDataAdapter方法在using的范围外,那么这里的using自动释放资源功能释放延伸到SqlDataAdapter方法中,因为using的释放应该在使用完SqlDataAdapter方法后
很不明白这里的using对SqlDataAdapter方法的影响
第一行的using不是指命名空间,而是资源的自动释放,相当于try{}catch{}finally{}
可能我描述得不清楚,你再找一下资料吧