2013-04-07 201 views
0

我有一个模型中的以下代码用于处理所有与数据库相关的活动,所以我不会在每次我想要编写冗余代码段时与数据库的工作,这个模型类是这样的:ConnectionString属性尚未初始化,但访问静态属性

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对象使用。

请帮忙。

回答

0

在一个web应用程序,它通常是更好地打开和关闭通过using语句,像这样的连接:

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

不要重复使用的SqlConnection,因为它会导致你的webapp意外超时。

相关问题