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

时间:2017-08-15 07:35:05

标签: mysql asp.net

这是我的数据访问层,但我不知道为什么我在多用户使用时遇到连接错误,当超过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();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

您可以创建新连接并从getConnection()函数返回。

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

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