访问静态属性时,尚未初始化连接字符串属性

本文关键字:属性 初始化 连接 字符串 静态 访问 | 更新日期: 2023-09-27 18:07:45

>我在模型中有以下代码,我已将其用于处理所有与数据库相关的活动,因此我不会每次想要使用数据库时都编写多余的代码,此模型类如下所示:

Shared.cs

private static string ConStr
    {
        get
        {
            Shared shrObj = new Shared();
            return shrObj.DecryptString(ConfigurationManager.ConnectionStrings["constr"].ConnectionString);
        }
    }
    public static SqlConnection SqlCon = new SqlConnection(ConStr);
    public static SqlDataReader ORC(SqlCommand sqlCom)
    {
        SqlDataReader sqlReader=null;
        try
        {
            SqlCon.Open();//ERROR HERE 
            //The ConnectionString property has not been initialized.
            sqlReader = sqlCom.ExecuteReader();
        }
        catch (Exception ex)
        {
            WriteToFile(DateTime.Now.ToString("dd-MM-yyyy HH:mm:ss") + " | " + ex, 0);
            return sqlReader;
        }
        return sqlReader;
    }
            //Functions for closing connections…
            //Functions for reading scalar…
            //etc.

现在从其他模型中,当我尝试像这样使用这些函数时: User.cs

internal IEnumerable<User> GetUser()
    {
        var sqlCom = new SqlCommand("SELECT * FROM [user];", Shared.SqlCon);
        using (var blgs = Shared.ORC(sqlCom))
        {
            // ……. … …
            }
        }
    }

让我感到困惑的另一件事是,当登录时第一次从这里调用此数据读取函数时,它工作正常,它总是第二次调用会产生问题。

可能是我只是没有使用静态属性进行写入。但是我必须保持静态,因为它被 SqlConnection 对象使用,而该对象本身是静态的,可以直接从类外部使用。

请帮忙。

访问静态属性时,尚未初始化连接字符串属性

在 Web 应用中,通常最好通过 using 语句打开和关闭连接,如下所示:

using (SqlConnection conn = new SqlConnection(connectionString))
    {
     conn.Open();
// do some stuff
}

不要重复使用 sqlconnection,因为它可能会导致 Web 应用中出现意外超时。