ExecuteReader 需要一个开放且可用的连接 Asp.net

Posted

技术标签:

【中文标题】ExecuteReader 需要一个开放且可用的连接 Asp.net【英文标题】:ExecuteReader requires an open and available Connection Asp.net 【发布时间】:2014-01-27 21:21:28 【问题描述】:

我的网站在服务器上时出现错误。

System.Data ExecuteReader 需要一个打开且可用的连接。 连接的当前状态是打开的

private static int OpenCon()
    
        int degel = 0;
        try
        
            ResetCon(true);
            if (con.State != ConnectionState.Open)
                con.Open();
            degel = -1;
        
    catch (System.Data.SqlClient.SqlException ex)
    
        CloseCon();
        if (ex.Errors[0].Number == 53)
        

        
    
    return degel;


private static void CloseCon()

    if (con.State != ConnectionState.Closed)
        con.Close();
    if (cmd == null) 
        return; 
    else 
        cmd.Dispose();


private static SqlCommand CreateCmd(string sql, CommandType type)

    SqlCommand cmd = new SqlCommand();
    try
    
        cmd.Connection = con;
        cmd.CommandType = type;
        cmd.CommandText = sql;
        cmd.CommandTimeout = 300;
    
    catch
    
        CloseCon();
    
    return cmd;


 public static DataTable GetTable(string sql)
        
            DataTable dt = new DataTable();
            try
            
                OpenCon();
                SqlCommand cmd = CreateCmd(sql, CommandType.Text);
                adpt = new SqlDataAdapter();
                adpt.SelectCommand = cmd;
                adpt.Fill(dt);
                CloseCon();
            
            catch (Exception ex)
            
                CloseCon();
                Log.WriteLog("DataBase.GetTable()", ex, HttpContext.Current.Request);
            
            return dt;
        

谢谢, 哈尼

【问题讨论】:

【参考方案1】:

我认为此错误在您的开发 PC 上无法重现,是吗?

您不应该使用静态连接,在 ASP.NET 中更是如此。您的 DB 类只是像这样令人讨厌的错误的来源。而是对实现IDisposable 的所有内容(例如连接)使用using 语句,以确保它尽快关闭(即使出现错误)。

我不知道我可以添加什么,因为这似乎与 ...

ExecuteReader requires an open and available Connection. The connection's current state is Connecting

【讨论】:

以上是关于ExecuteReader 需要一个开放且可用的连接 Asp.net的主要内容,如果未能解决你的问题,请参考以下文章

ExecuteReader 需要一个打开且可用的连接 - 当前状态为关闭

System.InvalidOperationException:ExecuteReader 需要打开且可用的连接。连接的当前状态为关闭

ExecuteReader 要求已打开且可用的连接。连接的当前状态为已关闭。

OleDb 错误:“ExecuteNonQuery() 需要打开且可用的连接”[关闭]

ExecuteReader 需要打开的连接

无法连接到远程 MS Access 数据库