热门标签 | 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


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

推荐阅读
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 本文讨论了在使用sp_msforeachdb执行动态SQL命令时,当发生错误时如何捕获数据库名称。提供了两种解决方案,并介绍了如何正确使用'?'来显示数据库名称。 ... [详细]
  • REVERT权限切换的操作步骤和注意事项
    本文介绍了在SQL Server中进行REVERT权限切换的操作步骤和注意事项。首先登录到SQL Server,其中包括一个具有很小权限的普通用户和一个系统管理员角色中的成员。然后通过添加Windows登录到SQL Server,并将其添加到AdventureWorks数据库中的用户列表中。最后通过REVERT命令切换权限。在操作过程中需要注意的是,确保登录名和数据库名的正确性,并遵循安全措施,以防止权限泄露和数据损坏。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • IhaveconfiguredanactionforaremotenotificationwhenitarrivestomyiOsapp.Iwanttwodiff ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了在使用Python中的aiohttp模块模拟服务器时出现的连接失败问题,并提供了相应的解决方法。文章中详细说明了出错的代码以及相关的软件版本和环境信息,同时也提到了相关的警告信息和函数的替代方案。通过阅读本文,读者可以了解到如何解决Python连接服务器失败的问题,并对aiohttp模块有更深入的了解。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • Spring学习(4):Spring管理对象之间的关联关系
    本文是关于Spring学习的第四篇文章,讲述了Spring框架中管理对象之间的关联关系。文章介绍了MessageService类和MessagePrinter类的实现,并解释了它们之间的关联关系。通过学习本文,读者可以了解Spring框架中对象之间的关联关系的概念和实现方式。 ... [详细]
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社区 版权所有