使用ExecuteReader时报错“阅读器关闭时尝试调用Read无效”的解决办法

使用ExecuteReader时报错“阅读器关闭时尝试调用Read无效”的解决办法出现如下绿色字体出错的问题,是由于using使用过后数据库会自动关闭,出了using的作用域后,在调用的时候无法找到信息form1.cs        publicstaticSqlDataReaderExecuteReader(stringsql,paramsSqlParameter[]parameters)    {      stringconnStr…

大家好,又见面了,我是你们的朋友全栈君。

出现如下绿色字体出错的问题,是由于using使用过后数据库会自动关闭,出了using的作用域后,在调用的时候无法找到信息

form1.cs
        public static SqlDataReader ExecuteReader(string sql, params SqlParameter[] parameters)
        {
            string connStr = ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString;
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = sql;
                    foreach (SqlParameter parameter in parameters)
                    {
                        cmd.Parameters.Add(parameter);
                    }
                    return cmd.ExecuteReader();
                }                
            }  
        }
DBHelper.cs
        private void button2_Click(object sender, EventArgs e)
        {
            SqlDataReader reader = DBHelper.ExecuteReader("select * from T_Person");
            while (reader.Read ())
            {
                string name = reader.GetString(reader.GetOrdinal("Name"));
                MessageBox.Show(name);
            }
        }

改:将Using去掉,用手动打开open、关闭close,用cmd.ExecuteReader(CommandBehavior.CloseConnection)

form1.cs

public static SqlDataReader ExecuteReader(string sql, params SqlParameter[] parameters)
        {
            string connStr = ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString;
            SqlConnection conn = new SqlConnection(connStr);
            conn.Open();
            SqlCommand cmd = conn.CreateCommand();
            cmd.CommandText = sql;
            foreach (SqlParameter parameter in parameters)
            {
                cmd.Parameters.Add(parameter);
            }
            return cmd.ExecuteReader(CommandBehavior.CloseConnection);

        }

DBHelper.cs

        private void button2_Click(object sender, EventArgs e)
        {
            SqlDataReader reader = DBHelper.ExecuteReader("select * from T_Person");
            while (reader.Read ())
            {
                string name = reader.GetString(reader.GetOrdinal("Name"));
                MessageBox.Show(name);
            }
        }

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/151508.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月20日 上午10:00
下一篇 2022年6月20日 上午10:00


相关推荐

  • docker部署web项目_小钢炮docker安装web

    docker部署web项目_小钢炮docker安装web前言前面我们运行的容器并没有一些什么特别的用处。接下来让我们尝试使用docker构建一个web应用程序。我们将在docker容器中运行一个PythonFlask应用来运行一个web

    2022年8月6日
    16
  • android json解析及简单例子

    android json解析及简单例子android2.3提供的json解析类android的json解析部分都在包org.json下,主要有以下几个类:JSONObject:可以看作是一个json对象,这是系统中有关JSON定义的基本

    2022年7月2日
    24
  • Raid0、 Raid1、 Raid5、 Raid10的原理、特点、性能区别[通俗易懂]

    Raid0、 Raid1、 Raid5、 Raid10的原理、特点、性能区别[通俗易懂]一、RAID是什么?RAID(RedundantArrayofIndependentDisks)即独立磁盘冗余阵列,简称为「磁盘阵列」,其实就是用多个独立的磁盘组成在一起形成一个大的磁盘系统,从而实现比单块磁盘更好的存储性能和更高的可靠性。二、RAID有哪些?RAID方案常见的可以分为:RAID0 RAID1 RAID5 RAID6 RAID10下面来分别介绍一下。Raid0:至少需要两块硬盘,磁盘越多,读写速度越快,没有冗余。Raid1:只能用两块硬

    2022年7月25日
    43
  • linux ntp配置文件_linux安装ntp服务

    linux ntp配置文件_linux安装ntp服务在Linux系统中,为了避免主机时间因为在长时间运行下所导致的时间偏差,进行时间同步(synchronize)的工作是非常必要的。Linux系统下,一般使用ntp服务来同步不同机器的时间。NTP是网络时间协议(NetworkTimeProtocol)的简称,干嘛用的呢?就是通过网络协议使计算机之间的时间同步化。安装NTP包检查是否安装了ntp相关包。如果没有安装ntp相关包,使用rpm或y…

    2022年10月11日
    4
  • BurpSuit暴力激活成功教程密码

    BurpSuit暴力激活成功教程密码暴力激活成功教程原理暴力激活成功教程是用户自定义字典文件中的内容与验证程序交互,从而在枚举过程中得到正确数据案例:激活成功教程用户名、密码激活成功教程验证码-之前四位数的手机验证码在未进行任何防护措施,导致被枚举出来暴力激活成功教程的基础应用程序或服务器未进行限制具有内容涵盖全方面的字典文件暴力激活成功教程方式根据激活成功教程的验证码内容是否处于服务状态将暴力激活成功教程分为以下两类:1.在线激活成功教程2.离线激活成功教程无论是在线还是离线是否可以…

    2022年8月22日
    14
  • 2020职称计算机题库和答案,2020职称计算机考试PowerPoint习题及答案1

    2020职称计算机题库和答案,2020职称计算机考试PowerPoint习题及答案1

    2021年11月28日
    57

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号