问题从认证考试:我需要确保应用程序使用的连接的最小数量的数据库
您使用Microsoft Visual Studio 2010和Microsoft .NET Framework 4创建应用程序。 该应用程序包含以下代码段。 (只包括为参考线号。)
01 class DataAccessLayer
02 {
03 private static string connString;
04
05 ...
06 public static DataTable GetDataTable(string command){
07
08 ...
09 }
10 }
您需要定义DataAccessLayer类的连接生命周期。您还需要确保应用程序使用数据库的最少连接数。 你应该怎么做?
[A]在线路将下面的代码段04.
private static SqlConnection conn = new SqlConnection(connString);
public static void Open(){
conn.Open();
}
public static void Close(){
conn.Close();
}
[B]在插入线04
private SqlConnection conn = new SqlConnection(connString);
public void Open(){
conn.Open();
}
public void Close(){
conn.Close();
}
[C]下面的代码段与更换线01以下代码段。
class DataAccessLayer : IDisposable
将下面的代码段排队04.
private SqlConnection conn = new SqlConnection(connString);
public void Open(){
conn.Open();
}
public void Dispose(){
conn.Close();
}
[d]在行将下面的代码段07.
using (SqlConnection conn = new SqlConnection(connString)){
conn.Open();
}
有些人争辩说,正确的答案是[D],但从我的角度来看,这是没有意义的,因为在“使用”块之后连接正在打开并立即关闭。
有人能指出正确答案并解释原因吗?
谢谢!
你说得对,D会调用((IDisposable)conn).Dispose()一旦use块退出。 – 2012-03-17 00:52:33
那么原始代码示例不完整,答案也是如此。这个想法是,您将using语句插入到GetDataTable方法中,然后在该using语句中调用必要的db命令并返回数据表。你认为没有意义的论点是无效的,因为假定数据访问代码会出现在using语句的大括号之前。 – Chris 2012-03-17 00:54:45