使用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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • php sqrt函数,sqrt函数怎么使用「建议收藏」

    php sqrt函数,sqrt函数怎么使用「建议收藏」JavaScript中的sqrt函数是用于返回一个数的平方根,也就是开平方,下面的文章我们就来具体看一下sqrt函数的使用方法。我们来看一下sqrt函数的基本语法Math.sqrt(value)平方根数需要计算。返回作为参数传递的数字的平方根。需要注意的是:1、作为参数传递的非数字字符串返回NaN2、作为参数传递的多于1个整数的数组返回NaN3、作为参数传递的负数返回NaN4、作为参数传递的空字符…

    2022年6月6日
    34
  • docker开放2375端口,并添加安全传输层协议(TLS)和CA认证

    docker开放2375端口,并添加安全传输层协议(TLS)和CA认证为了更便捷地打包和部署,服务器需要开放2375端口才能连接docker,但如果开放了端口没有做任何安全保护,会引起安全漏洞,被人入侵、挖矿、CPU飙升这些情况都有发生,任何知道你IP的人,都可以管理这台主机上的容器和镜像,真的可怕。为了解决安全问题,只要使用安全传输层协议(TLS)进行传输并使用CA认证即可。制作证书及秘钥我们需要使用OpenSSL制作CA机构证书、服务端证书和客户端证书,以下操作均在安装Docker的Linux服务器上进行。创建一个目录用于存储生成的证书和秘钥mkdir

    2022年6月3日
    178
  • 更改php.ini配置

    更改php.ini配置

    2021年9月3日
    59
  • php发现一个神奇的函数[通俗易懂]

    php发现一个神奇的函数

    2022年2月9日
    39
  • linux防火墙状态查看_linux查看iptables状态

    linux防火墙状态查看_linux查看iptables状态1.查看防火墙状态:active(running)即是开启状态:systemctlstatusfirewalld2.查看已开发端口命令:firewall-cmd–list-all3.新增防火墙开放端口:firewall-cmd–zone=public–add-port=3306/tcp–permanent4.开放端口后需要重新加载防火墙:firewall-cmd–reload5.firewalld的基本使用命令:启动:systemctls.

    2025年11月12日
    2
  • Activity中bindService和registerReceiver的清理工作[通俗易懂]

    Activity中bindService和registerReceiver的清理工作[通俗易懂]在Android开发中,我们经常需要注册BroadcastReceiver和bindservice。接口函数如下:publicIntentregisterReceiver(BroadcastReceiverreceiver,IntentFilterfilter);publicvoidunregisterReceiver(BroadcastReceiverrecei

    2025年10月25日
    2

发表回复

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

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