我创建了一个可以从 DataLayer 调用的静态方法,以便获取数据。我意识到如果你为 SQLConnection 做单例是非常糟糕的,因为可能有并发用户,而我有连接池来处理这个问题。
我创建这个静态方法只是为了不每次都初始化该方法。
public static DataSet Fetch(String DataSet, String StoredProcedure, String SrcTable)
{
DataSet ds = new DataSet(DataSet);
using (SqlConnection conn = new ConnectionClass().Connection)
{
try
{
using (SqlCommand cmd = new SqlCommand(StoredProcedure, conn))
{
using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))
{
adapter.Fill(ds, SrcTable);
}
}
}
catch (SqlException ex)
{
throw ex;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (conn.State == ConnectionState.Open)
conn.Close();
}
if (DatabaseUtils.DataSetIsNotEmpty(ds))
return ds;
}
throw new NoRowsReturnedException("Database has returned no rows");
}
这种方法在部署的环境中会失败吗?
最佳答案
方法很好,但是不需要所有的try/catch/finally。这就是“使用”的作用。更不用说如果 conn 对象未成功构造,您可能会出现空引用。
关于c# - 将新的 SqlConnection 实例包装在静态方法中是不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24754950/