获取连接错误连接必须有效并打开

问题描述:

这是我的数据访问层,但我不知道为什么我在多用户使用时出现连接错误,并且当超过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

您可以直接创建一个新的连接,并从getConnection()函数返回。

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

并在本地范围内使用con变量。

+0

public static MySqlConnection con = null; 保护的MySqlConnection的getConnection() { 如果(CON == NULL || con.State = ConnectionState.Open!) { CON =新的MySqlConnection(ConfigurationManager.ConnectionStrings [ “conn将”]的ConnectionString); con.Open(); } return(con); } –

+0

这就是问题,除去这个'public static',使'con'在所有函数的局部范围内变量。 –

+0

当超过1个用户访问时仍然网站卡住。 –