2013-10-24 29 views
0

我有一個問題,我的連接字符串, 我有字符串參數的Execute方法來接收查詢,的ConnectionString = NULL時,我使用的連接方法1倍以上

public class Create_Connection 
{ 
public static readonly string CONN_STRING = 
ConfigurationManager.ConnectionStrings["TaskConnectionString"].ConnectionString; 
public static readonly SqlConnection SqlConn = new SqlConnection(CONN_STRING); 
public static readonly SqlConnection CONN = new SqlConnection(CONN_STRING); 

    public DataSet ExecuteSql(string sql) 
    { 
    SqlDataAdapter da; 
    DataSet ds; 

    if (CONN.State == ConnectionState.Open) 
     CONN.Close(); 
    CONN.Open(); 
    da = new SqlDataAdapter(sql, CONN_STRING); 
    ds = new DataSet(); 
    da.Fill(ds); 
    CONN.Dispose(); 
    CONN.Close(); 
    return ds; 
    } 

} 

當我使用它第一次它的工作將會,但是當第二次查詢的時間來使用Execute方法我的程序停止並給我這個masseg:「ConnectionString屬性尚未初始化」!和InnerException:「null」!!!

當第一次工作的時候該如何可能,然後當Conniction String是「Static readonly」時進行更改!

並提前致謝:) ..

+7

不要在ASP.NET中使用靜態連接。 http://stackoverflow.com/questions/9705637/executereader-requires-an-open-and-available-connection-the-connections-curren –

+0

你不在ASP.NET上使用靜態的原因是因爲靜態屬性是爲所有用戶連接到您的服務器。所以如果一個用戶清除該屬性,tthis屬性將清除所有用戶 – Izikon

+0

+1 @TimSchmelter真的很好回答 –

回答

0

請勿使用靜態SqlCOnnection。

public class Create_Connection 
    { 
     public static readonly string CONN_STRING = ConfigurationManager.ConnectionStrings["TaskConnectionString"].ConnectionString; 
     public static readonly SqlConnection SqlConn = new SqlConnection(CONN_STRING); 
    //public static readonly SqlConnection CONN = new SqlConnection(CONN_STRING); 

     public DataSet ExecuteSql(string sql) 
     { 
      SqlDataAdapter da; 
      DataSet ds; 

      using (var CONN = new SqlConnection(CONN_STRING)) { 

       //if (CONN.State == ConnectionState.Open) 
       // CONN.Close(); 
       CONN.Open(); 
       da = new SqlDataAdapter(sql, CONN_STRING); 
       ds = new DataSet(); 
       da.Fill(ds); 
       //CONN.Dispose(); 
       CONN.Close(); 
      } 
      return ds; 
     } 
    } 

並在使用它時創建變量。像這樣

public class Create_Connection 
    { 
     public static readonly string CONN_STRING = ConfigurationManager.ConnectionStrings["TaskConnectionString"].ConnectionString; 
     public static readonly SqlConnection SqlConn = new SqlConnection(CONN_STRING); 

     public DataSet ExecuteSql(string sql) 
     { 
      var ds = new DataSet(); 
      using (var CONN = new SqlConnection(CONN_STRING)) { 
       CONN.Open(); 
       var da = new SqlDataAdapter(sql, CONN_STRING); 
       da.Fill(ds); 
       CONN.Close(); 
      } 
      return ds; 
     } 
    } 
相關問題