2017-08-15 15 views
0

これは私のデータアクセス層ですが、マルチユーザーが1人以上のユーザーがウェブサイトにアクセスしたときに接続エラーが発生する理由がわかりません。それは私のコードを掲載しています。これは更新されたコードです。それはまた、最後のコードと同じ結果になります。それはなぜ起こったか1人の以上のユーザーが、それはログインしたが、そのない作業より後に1〜2ミント接続エラー接続は有効でオープンしている必要があります

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Data; 
using MySql.Data; 
using MySql.Data.MySqlClient; 
using System.Configuration; 


public class clsMySqlConnection 
{ 
    public MySqlConnection con = null; 

    protected MySqlConnection getConnection() 
    { 
     if (con == null || con.State != ConnectionState.Open) 
     { 
      con = new MySqlConnection(ConfigurationManager.ConnectionStrings["conn"].ConnectionString); 
      con.Open(); 
     } 
     return (con); 
    } 
} 

public class clsManagement : clsMySqlConnection 
{ 
    public DataTable getData(string MySql) 
    { 
     MySqlCommand cmd = new MySqlCommand(); 
     MySqlDataAdapter da = new MySqlDataAdapter(); 
     DataTable dt = new DataTable(); 
     cmd.CommandText = MySql; 
     cmd.Connection = getConnection(); 
     da.SelectCommand = cmd; 
     da.Fill(dt); 
     return (dt); 
    } 

    public MySqlDataReader ExecuteActionQuery(string MySql) 
    { 
     MySqlCommand cmd = new MySqlCommand(); 
     cmd.CommandText = MySql; 
     try 
     { 
      cmd.Connection = getConnection(); 
      cmd.ExecuteNonQuery(); 
      MySqlDataReader rdr = cmd.ExecuteReader(); 
      return (rdr); 
     } 
     catch (Exception) 
     { 
      throw; 
     } 
     finally 
     { 
      if (con.State == ConnectionState.Open) 
       con.Close(); 
     } 

    } 

    public int ExecuteDML(string MySql) 
    { 
     MySqlCommand cmd = new MySqlCommand(); 
     cmd.CommandText = MySql; 
     try 
     { 
      cmd.Connection = getConnection(); 
      return cmd.ExecuteNonQuery(); 
     } 
     catch (Exception) 
     { 
      throw; 
     } 
     finally 
     { 
      if (con.State == ConnectionState.Open) 
       con.Close(); 
     } 
    } 
} 
+0

エラーの全文を投稿してください。 – theFunkyEngineer

答えて

0

は、あなただけの新しい接続を作成することができますし、getConnection()関数から返さアクセスしようとしたとき、私は知っている、DNT。

protected MySqlConnection getConnection() 
{ 
     MySqlConnection con = new MySqlConnection(ConfigurationManager.ConnectionStrings["conn"].ConnectionString); 
     con.Open(); 
} 

ローカルスコープの変数conを使用してください。

+0

パブリック静的MySqlConnection con = null; (CON == NULL || con.State = ConnectionState.Open!) {CON =新しいMySqlConnectionに(ConfigurationManager.ConnectionStrings [ "connの"]のConnectionString。)場合MySqlConnectionにのgetConnection(){ 保護。 con.Open(); } return(con); } –

+0

これは問題です。この 'public static'を削除し、すべての関数のローカルスコープで' con'変数を作ります。 –

+0

まだ1人以上のユーザーがアクセスしたときにウェブサイトが停止しました。 –

関連する問題