c# - 将新的 SqlConnection 实例包装在静态方法中是不好的做法吗?

标签 c# static sqlconnection

我创建了一个可以从 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/

相关文章:

c# - 我如何以编程方式知道代码在哪个平台下运行?

c# - 为什么 AsyncLocal 不从 OWIN 中间件流向 WebForms 页面?

c++ - cpp-静态成员和函数

c - 在函数返回的指针处打印值

c# - 跨多个方法使用 SQLConnection ('using' 关键字是或否)

c# - 使用正则表达式从字符串中获取子字符串

c# - xs :key, 为什么当键值不是键引用的成员时验证通过?

c++ - C++中同时使用RAII代码和非RAII代码的问题如何解决?

.net-core - 如何使用 dotnet Standard 访问 Azure Function App ConnectionString

c# - 如何在单个 SQL 连接中运行多个 SQL 命令?