Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用ExecuteReader时报错“阅读器关闭时尝试调用Read无效”的解决办法

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

作者头像
全栈程序员站长
发布于 2022-08-28 03:55:35
发布于 2022-08-28 03:55:35
1.4K00
代码可运行
举报
运行总次数:0
代码可运行

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

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

form1.cs
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        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
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        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.cn/151508.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
C# 手机号码归属地查询
13003000000-13003009999-合肥 13003010000-13003029999-蚌埠 13003030000-13003049999-芜湖 13003050000-13003069999-合肥 13003070000-13003079999-淮南 13003080000-13003089999-合肥
全栈程序员站长
2022/09/15
5670
B7第七章第 1 节: ADO.Net简介
第七章第 1 节: ADO.Net简介 MYSQL的.Net驱动mysql-connector-net-***.msi下载地址:
静心物语313
2020/03/24
1.7K0
WCF入门 (13)
  公司略无聊,周三前同事推荐跳槽,于是会去更新了一下简历,突然发现,快一年了,我竟然想不出我可以往简历上添加点什么值得自豪的东西。下午和小伙伴聊了一会天,他告诉我,可以往简历上写上“英语口语水平有提高”,惭愧。。。
_淡定_
2018/08/24
3250
WCF入门 (13)
mysql executereader_“c#”中“ExecuteReader”是什么意思?「建议收藏」
1、MSDN上说:Sends the CommandText to the Connection and builds a SqlDataReader.
全栈程序员站长
2022/08/28
1.5K0
深入浅出三层架构
这几天看了不少三层架构的资料,整理整理 ——故写篇博文谈谈自己的看法。 三层架构概念: 三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚,低耦合”的思想,复杂项目不能把SQL语句直接写到程序里,不模块话,难以维护。应该采取三层架构。 1、表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。 2、业务逻辑层(BLL):针对具体问题的操作,也可以
用户1161731
2018/01/11
1.3K0
深入浅出三层架构
c#操作数据库(winform如何修改数据库设置)
大家好,又见面了,我是你们的朋友全栈君。鉴于很多童鞋们对数据库操作不是很熟悉,这里对数据库操作的相关知识做个介绍。
全栈程序员站长
2022/07/29
2.3K0
c#操作数据库(winform如何修改数据库设置)
分层应用——怎样实现登录?
三层这个阶段的学习主要是靠自学,但从网上找到的相关资料、博客都是零散的,没有体系。资料看了不少,但一直没有一个大概的轮廓。查到的资料都是理论性的,那如何在详细的样例中实现分层呢?导图之后就是详细的小样例。
全栈程序员站长
2022/07/12
5990
分层应用——怎样实现登录?
练习文件保存按照日期来创建文件夹,并保存
上传页面: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> </head> <body> <form action="UploadStoreByDate.ashx" method="post" enctype="multipart/for
静心物语313
2020/03/24
1K0
WCF入门(10)
公司是做乙方的,工资还凑合,主要是项目基本都已完成,进去就是干维护,体会不到那种从头彻尾的成就感。项目中具体用了EF+Ado.net+WCF+WPF+(VB.net啊,坑啊,完全不知道是这个东西),整个解决方案有47个项目,是一个国际化的电话保险销售系统中的一部分。感觉自己是去体验生活的。这个项目也就是自己学习WCF的原因。
_淡定_
2018/08/24
3490
WCF入门(10)
自定义 SqlHelp
1 using System; 2 using System.Collections.Generic; 3 using System.Data.SqlClient; 4 using System.Data; 5 using System.Configuration; 6 using System.Reflection; 7 using System.Collections; 8 namespace DataHelp 9 { 10 #region ADO.NET
跟着阿笨一起玩NET
2018/09/19
5210
WCF入门(6)
昨天早上去医院做入职体检,被告知要预约,本以为是要排队,我连视频都准备好了。。。结果就回来了。下午去了新公司那边找房子,2了,因为公司提供了班车列表,我既然就只在班车所经过的几个地方找,却遗漏了公司附近这个重要的地址。最后找了一个“江景房”,上阳台就能看到钱塘江。价格和现在的比翻了一倍,累了,不想找了。
_淡定_
2018/08/24
3440
WCF入门(6)
mysql executereader_C# 操作MySQL数据库, ExecuteReader()方法参数化执行T-SQL语句, 游标读取数据…
C# 操作My SQL数据库需要引用”MySql.Data”, 可通过两种方式获取。
全栈程序员站长
2022/08/28
1.8K0
mysql executereader_ExecuteReader的用法
最近在做winform的编程,想到一真没有使用过ExecuteReader。可能以前以后它的用户不大,或者
全栈程序员站长
2022/08/31
5200
ADO数据库C#中ExecuteReader、ExecuteNonQuery、ExecuteScalar、SqlDataReader、SqlDataAdapter
CommandType 命令类型,如果是sql语句,则为CommandType.Text,否则为 CommandType.StoredProcdure
全栈程序员站长
2022/08/28
9430
2024年了还有人玩DbHelper?- 确实很6
时光荏苒,转眼已是2024年。在这个技术日新月异的时代,有些经典却永远不会过时。DbHelper,这个在开发者社区中一直备受瞩目的名字,如今依然熠熠生辉。最近,一位技术大佬再次展示了DbHelper的强大魅力,让我们一起来欣赏一下吧!
沙漠尽头的狼
2024/01/26
1810
2024年了还有人玩DbHelper?- 确实很6
C#进阶-使用DBHelper工具类封装ADO.NET框架底层方法简化数据库操作
在C#开发中,与数据库的交互是常见的需求。通常,我们会使用ADO.NET直接执行SQL查询,虽然这种方法非常灵活,但容易导致代码重复,并且在处理多个SQL语句时容易出错。为了提高代码的可维护性和复用性,封装一个通用的数据库操作助手类(DBHelper)是非常有必要的。本文将详细介绍如何创建和使用一个DBHelper类来简化数据库操作。
Damon小智
2024/08/16
3021
C#进阶-使用DBHelper工具类封装ADO.NET框架底层方法简化数据库操作
一个自定义的C#数据库操作基础类 SqlHelper
SqlHelper其实是我们自己编写的一个类,使用这个类目的就是让使用者更方便、更安全的对数据库的操作,既 是除了在SqlHelper类以外的所有类将不用引用对数据库操作的任何类与语句,无须担心数据库的连接与关闭的问题。
用户7108768
2021/11/02
8120
C#操作sql通用类 SQLHelper
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Collections; using System.Data.SqlClient; /// <summary> /// 数据库的通用访问代码 /// 此类为抽象类,不允许实例化,在应用时直接调用即可 /// </summary> public abstract class
艳艳代码杂货店
2021/10/27
2.4K0
SQL参数化查询
一个简单理解参数化查询的方式是把它看做只是一个T-SQL查询,它接受控制这个查询返回什么的参数。通过使用不同的参数,一个参数化查询返回不同的结果。要获得一个参数化查询,你需要以一种特定的方式来编写你的代码,或它需要满足一组特定的标准。 有两种不同的方式来创建参数化查询。第一个方式是让查询优化器自动地参数化你的查询。另一个方式是通过以一个特定方式来编写你的T-SQL代码,并将它传递给sp_executesql系统存储过程,从而编程一个参数化查询。 这样的解释还是有点模糊,先看一例:
全栈程序员站长
2022/08/31
2.5K0
利用Microsoft.VisualBasic中TextFieldParser解析器把CSV格式倒入数据库
写了个Demo,利用Microsoft.VisualBasic这个程序集中的TextFieldParser解析器解析CSV格式的文件,然后将解析的数据插入到相关表,这样的好处是不用去用令人头疼的ODBC去操作CSV格式文件,如之前是这样去操作: 利用ODBC去操作 string strConnString = "Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=" + this.dirCSV.Trim() + ";Extensions=asc,csv,ta
用户1161731
2018/01/11
7450
相关推荐
C# 手机号码归属地查询
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验