热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

网站报错ExecuteReader要求已打开且可用的Connection.连接的当前状态为正在连接.

以下是我的sqlhelper代码,用完我都是关闭连接的不懂为什么还报这个错!求大神们看看!publicclassSqlHelper{数据库连接字符串(w
以下是我的sqlhelper代码,用完我都是关闭连接的 不懂为什么还报这个错!求大神们看看!
 public class SqlHelper
    {
        //数据库连接字符串(web.config来配置),可以动态更改connectionString支持多数据库.
        public static readonly string ConnString = System.Configuration.ConfigurationSettings.AppSettings["SqlServerConnString"].ToString();
        public SqlHelper() { }
        static SqlConnection sqlConn;
        private static SqlConnection GetConnection()
        {
            sqlConn = new SqlConnection(ConnString);
            sqlConn.Open();
            return sqlConn;
        }
        /// 
        /// 增加、删除、修改的方法
        /// 

        /// 
        /// 返回ID
        public static int ExecuteNoQuery2(string strsql)
        {
            int iCount = -1;


            using (SqlConnection sqlconn = GetConnection())
            {
                if (sqlconn.State != ConnectionState.Open)
                {
                    sqlconn.Open();
                }
                SqlCommand sqlcomm = new SqlCommand(strsql, sqlconn);
                iCount = sqlcomm.ExecuteNonQuery();
                if (iCount > 0)
                {
                    sqlcomm.Parameters.Clear();
                    sqlcomm.CommandText = "Select @@identity as [MaxID]";
                    iCount = int.Parse(sqlcomm.ExecuteScalar().ToString());
                }
            }
            if (sqlConn != null && sqlConn.State == ConnectionState.Open)
            {
                sqlConn.Close();
            }
            return iCount;
        }
        /// 
        /// 
        /// 

        /// 
        /// 
        public static int ExecuteNoQuery(string strsql)
        {
            int iCount = 0;

            using (SqlConnection sqlconn = GetConnection())
            {
                if (sqlconn.State != ConnectionState.Open)
                {
                    sqlconn.Open();
                }
                SqlCommand sqlcomm = new SqlCommand(strsql, sqlconn);
                iCount = sqlcomm.ExecuteNonQuery();
            }
            if (sqlConn != null && sqlConn.State == ConnectionState.Open)
            {
                sqlConn.Close();
            }
            return iCount;
        }
        /// 
        /// 应用于删除修改增加
        /// 

        /// 
        /// 
        /// 
        public static int ExecuteNoQuery(string strSql, SqlParameter[] sp)
        {
            using (SqlConnection conn = new SqlConnection(ConnString))
            {
                conn.Open();
                SqlCommand sqlComm = new SqlCommand(strSql, conn);

                sqlComm.Parameters.AddRange(sp);
                int n = sqlComm.ExecuteNonQuery();
                if (sqlConn != null && sqlConn.State == ConnectionState.Open)
                {
                    sqlConn.Close();
                }
                return n;
            }
        }
        /// 
        ///一般用于Count(*)
        /// 

        /// 
        ///  返回第一行第一列的值
        public static int ExecuteScalar(string strSql)
        {
            object obj = new object();

            try
            {
                using (SqlConnection sqlconn = GetConnection())
                {

                    if (sqlconn.State != ConnectionState.Open)
                    {
                        sqlconn.Open();
                    }
                    SqlCommand sqlComm = new SqlCommand(strSql, sqlconn);
                    obj = sqlComm.ExecuteScalar();
                }
            }
            catch (Exception ex)
            {

            }
            finally
            {
                if (sqlConn != null && sqlConn.State == ConnectionState.Open)
                {
                    sqlConn.Close();
                }
            }
            if (obj == null)
            {
                return 0;
            }
            else
            {
                return (int)obj;
            }


        }

        /// 
        /// 返回数据集
        /// 

        /// 
        /// 返回DataSet对象
        public static DataSet GetDataSet(string strSql)
        {
            sqlConn = GetConnection();
            SqlDataAdapter sqlDA = new SqlDataAdapter(strSql, sqlConn);
            
            DataSet ds = new DataSet();
            sqlDA.Fill(ds);
            if (sqlConn != null && sqlConn.State == ConnectionState.Open)
            {
                sqlConn.Close();
            }
            return ds;
        }
        /// 
        /// 返回数据集
        /// 

        /// 
        /// 返回DataTable对象
        public static DataTable GetDataTable(string strSql)
        {
            sqlConn = GetConnection();
            DataTable ds = new DataTable();
            try
            {
                SqlDataAdapter sqlDA = new SqlDataAdapter(strSql, sqlConn);
                sqlDA.Fill(ds);
            }
            catch (Exception ex)
            {

            }
            finally
            {
                if (sqlConn != null && sqlConn.State == ConnectionState.Open)
                {
                    sqlConn.Close();
                }
            }
           
           
            return ds;
        }
        /// 
        /// 查询
        /// 

        /// 
        /// 返回DataReader对象
        public static SqlDataReader ExecuteReader(string strSql)
        {
            sqlConn = GetConnection();
            
                SqlCommand sqlComm = new SqlCommand(strSql, sqlConn);
                SqlDataReader sdr= sqlComm.ExecuteReader();

            return sdr;
        }

        /// 
        /// 关闭数据库连接
        /// 

        public void CloseConn()
        {
            if (sqlConn != null && sqlConn.State == ConnectionState.Open)
            {
                sqlConn.Close();
            }
        }
    }

7 个解决方案

#1


急急急在线等!!!

#2


有大神帮忙看看嘛!!!!!

#3


有大神帮忙看看嘛!!!!!

#4


调试啊。

#5


调试没出来啊

#6


#7


有大神看看嘛? 网站一会是好的一会就提示正在连接

推荐阅读
  • 本文详细介绍了如何使用C#实现不同类型的系统服务账户(如Windows服务、计划任务和IIS应用池)的密码重置方法。 ... [详细]
  • 1、编写一个Java程序在屏幕上输出“你好!”。programmenameHelloworld.javapublicclassHelloworld{publicst ... [详细]
  • 尽管在WPF中工作了一段时间,但在菜单控件的样式设置上遇到了一些基础问题,特别是关于如何正确配置前景色和背景色。 ... [详细]
  • 本文详细介绍了如何在Mac操作系统中为IntelliJ IDEA配置更高的内存限制,以提高开发效率和性能。 ... [详细]
  • 本文详细介绍了 `org.apache.tinkerpop.gremlin.structure.VertexProperty` 类中的 `key()` 方法,并提供了多个实际应用的代码示例。通过这些示例,读者可以更好地理解该方法在图数据库操作中的具体用途。 ... [详细]
  • 本文介绍了如何通过C#语言调用动态链接库(DLL)中的函数来实现IC卡的基本操作,包括初始化设备、设置密码模式、获取设备状态等,并详细展示了将TextBox中的数据写入IC卡的具体实现方法。 ... [详细]
  • OBS Studio自动化实践:利用脚本批量生成录制场景
    本文探讨了如何利用OBS Studio进行高效录屏,并通过脚本实现场景的自动生成。适合对自动化办公感兴趣的读者。 ... [详细]
  • D17:C#设计模式之十六观察者模式(Observer Pattern)【行为型】
    一、引言今天是2017年11月份的最后一天,也就是2017年11月30日,利用今天再写一个模式,争取下个月(也就是12月份& ... [详细]
  • 深入理解线程池及其基本实现
    本文探讨了线程池的概念、优势及其在Java中的应用。通过实例分析不同类型的线程池,并指导如何构建一个简易的线程池。 ... [详细]
  • 本文深入探讨了WPF框架下的数据验证机制,包括内置验证规则的使用、自定义验证规则的实现方法、错误信息的有效展示策略以及验证时机的选择,旨在帮助开发者构建更加健壮和用户友好的应用程序。 ... [详细]
  • 本文详细介绍了如何在Spring框架中设置事件发布器、定义事件监听器及响应事件的具体步骤。通过实现ApplicationEventPublisherAware接口来创建事件发布器,利用ApplicationEvent类定义自定义事件,并通过ApplicationListener接口来处理这些事件。 ... [详细]
  • JUnit下的测试和suite
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 一、Advice执行顺序二、Advice在同一个Aspect中三、Advice在不同的Aspect中一、Advice执行顺序如果多个Advice和同一个JointPoint连接& ... [详细]
  • Irish budget airline Ryanair announced plans to significantly increase its route network from Frankfurt Airport, marking a direct challenge to Lufthansa, Germany's leading carrier. ... [详细]
  • 问题场景用Java进行web开发过程当中,当遇到很多很多个字段的实体时,最苦恼的莫过于编辑字段的查看和修改界面,发现2个页面存在很多重复信息,能不能写一遍?有没有轮子用都不如自己造。解决方式笔者根据自 ... [详细]
author-avatar
拍友2702936504
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有