2016-05-29 3 views
-1

私は多くのリクエストがあり、データベース接続クラスには問題があります リクエストにはデータベースに接続するときに別のリクエストとシステムエラーがあります。 私のクラスは、ここで私はあなたが私が私のウェブサイトにたくさんのリクエストがあるので、私のウェブサイトのSQLサーバに接続しているプログラム

+0

はあなたが取得しているエラーメッセージを出すことはできますか? –

+0

たとえば、 **接続が閉じられていません。接続の現在の状態は接続中です。 execute GetConfigurationItem 3 ** – mpourbafrani

+0

'SqlDataAdapter.Fill'は、実行が閉じられた場合に接続を開き、それを閉じます。開いている場合は実行して開いたままにします。 – shadow

答えて

1

はこれを試してみてください役立つことを願って

cmd=new SqlCommand(); 
    con=new SqlConnection(); 
    SqlCommand cmdLog = new SqlCommand(); 
    string cns = ""; 
    if(MABP.GetdomainUrl()=="localhost") 
    { 
     cns=ConfigurationManager.ConnectionStrings["ConnectionStringClient"].ToString(); 
    } else 
    { 
     cns=ConfigurationManager.ConnectionStrings["ConnectionStringServer"].ToString(); 
    } 
    con.ConnectionString=cns; 
    cmd.Connection=con; 
    cmdLog.Connection=con; 
    try 
    { 
     cmd.CommandText = Query; 
     DataTable dt = new DataTable(); 
     SqlDataAdapter da = new SqlDataAdapter(); 
     da.SelectCommand=cmd; 
     while(con.State==ConnectionState.Connecting) 
     { 
     } 
     if(ConnectionState.Open!=con.State) 
     { 
      con.Open(); 
     } 
     da.Fill(dt); 
     while(con.State==ConnectionState.Connecting) 
     { 
     } 
     if(ConnectionState.Closed!=con.State) 
     { 
      con.Close(); 
     } 
     con.Dispose(); 
     cmd.Dispose(); 
     return dt; 
    } catch(Exception e) 
    { 
     return null; 
    } 

です:

  string sql = "select ...."; 
      string whereToConnect = MABP.GetdomainUrl()=="localhost" ? "ConnectionStringClient" : "ConnectionStringServer"; 
      string connectionString = ConfigurationManager.ConnectionStrings[whereToConnect].ToString(); 
      var dt = new DataTable(); 

      using (var connection = new SqlConnection(connectionString)) 
      { 
       using (var adapter = new SqlDataAdapter(sql, connection)) 
       { 
        try 
        { 
         adapter.Fill(dt); 
        } 
        catch 
        { 
         // Deal with exceprion if you want 
        } 
       } 
      } 

      return dt; 
+0

私はセキュリティ上の理由から私たちが接続を閉じるべきであると読んだところ それは本当ですか? – mpourbafrani

+0

@mpourbafraniリソースを消費しないように接続を閉じることをお勧めします。 'using'を使用すると、接続がクローズされ、スコープ外になったときに廃棄されます。ここで[DbDataAdapter.Fill Method](https://msdn.microsoft.com/en-us/library/905keexk%28v=vs.110%29.aspx)のモードを読み取ります。特に**備考**セクション。 – shadow

+0

ありがとう、私の友人私はこれをやったが、私はまだ問題がある – mpourbafrani

関連する問題