上一篇涉及到Command对象的ExecuteReader()方法返回一个DataReader对象,那么我们就来详细的介绍这个DataReade对象。

下面的例子使用的数据表依然与上篇的相同为CustomerManagement数据库中的manager数据表:

DataReader对象概述

DataReader对象提供了顺序的,只读的方式读取Command对象获得的数据结果集。正是因为DataReader是以顺序的方式连续地读取数据,所以DataReader会以独占的方式打开数据库连接。

由于DataReader只执行读操作,并且每次只在内存缓冲区里存储结果集的一条数据,所以使用Datareader对象的效率比较高,如果要查询大量数据,同事不需要随机访问和修改数据,DataReader是优先的选择。DataReader对象有许多的属性和方法:

判断查询结果中是否有数据

想要判断查询结果中是否有数据只需要判断DataReader对象的HasRows属性即可。

例一,使用上述的方法判断CustomerManagement数据库中的manager数据表是否有数据的完整代码为:

<span style="font-size:18px;">using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;//引入命名空间namespace ConsoleApplication1
{class Program{static void Main(string[] args){string conStr = "server=.;user=sa;pwd=123456;database=CustomerManagement";//连接字符串SqlConnection conText = new SqlConnection(conStr);//创建Connection对象try{conText.Open();//打开数据库string sql = "select * from manager";//创建统计语句SqlCommand comText = new SqlCommand(sql, conText);//创建Command对象SqlDataReader dr;//创建DataReader对象dr=comText.ExecuteReader();//执行查询if (dr.HasRows)//判断数据表中是否含有数据{Console.WriteLine("manager数据表中含有数据");}else{Console.WriteLine("manager数据表中没有数据");}}catch (Exception ex)//创建检查Exception对象{Console.WriteLine(ex.Message.ToString());//输出错误信息}finally{conText.Close();//关闭连接}Console.ReadLine();}}
}</span>

运行结果为:

读取数据

要想读取DataReader对象中的数据,就要用到DataReader对象的Read方法,由于DataReader对象每次只在内存缓冲区里存储结果集中的一条数据,所以要读取DataReader对象中的多条数据,就要用到迭代语句。

例二,通过DataReader对象的Read方法读取CustomerManagement数据库中的manager数据表中的数据的完整代码为:

<span style="font-size:18px;">using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;//引入命名空间namespace ConsoleApplication1
{class Program{static void Main(string[] args){string conStr = "server=.;user=sa;pwd=123456;database=CustomerManagement";//连接字符串SqlConnection conText = new SqlConnection(conStr);//创建Connection对象try{conText.Open();//打开数据库string sql = "select * from manager";//创建统计语句SqlCommand comText = new SqlCommand(sql, conText);//创建Command对象SqlDataReader dr;//创建DataReader对象dr=comText.ExecuteReader();//执行查询while(dr.Read())//判断数据表中是否含有数据{Console.Write(dr[0].ToString()+",");//输出用户标识Console.Write(dr["userName"].ToString()+",");//输出用户名Console.WriteLine(dr[2].ToString());//输出用户密码}dr.Close();//关闭DataReader对象}catch (Exception ex)//创建检查Exception对象{Console.WriteLine(ex.Message.ToString());//输出错误信息}finally{conText.Close();//关闭连接}Console.ReadLine();}}
}
</span>

运行的结果为:

与CustomerManagement数据库中的manage数据表中的数据比较得出读取的结果保持一致。

C#之读取数据:DataReader对象相关推荐

  1. DataReader对象

    DataReader对象(数据读取) DataReader对象提供了一个只进只读的数据读取器,用于从查询结果中读取数据,它每次仅能读取一行数据. [常用属性]: FieldCount:获取当前行的列数 ...

  2. 如何理解程序保存数据就是输出,读取数据就是输入的含义

    程序是如何保存数据的 对象的序列化就是持久化,就是把数据保存在硬盘中,程序是通过流的方式把对象写入文件,存在硬件中 为什么保存数据的类名称都表达一种输出意思,例如:output 对于程序而言,把内存的 ...

  3. datareader(Datareader对象的什么方法用于从查询结果中读取行)

    DataReader和IDataReader的区别? IDataReader是一个接口,它规定了实现这个接口的具体类要提供哪些操作. 而具体的DataReader比如SQLDataReader和Ole ...

  4. DataReader对象的基本使用 c#

    多行多列的数据读取 DataReader对象 功能 不同命名空间对应的DataReader对象 如何获得 命令对象.ExecuteReader() 对象的方法 Read方法 功能: 读取下一行 用法: ...

  5. ADO.NET-DataReader读取数据

    DataReader读取数据的原理 DataReader读取数据数据采用循环的方式检查并读取数据,数据是一条一条被拿出的. 一.单个结果集的查询 class Program{static void M ...

  6. mysql executereader_C# 操作MySQL数据库, ExecuteReader()方法参数化执行T-SQL语句, 游标读取数据...

    C# 操作My SQL数据库需要引用"MySql.Data", 可通过两种方式获取. 1.从NuGet下载"Install-Package MySql.Data -Ver ...

  7. 数据库开发019 DataReader对象

    DataReader对象提供单向只读数据,只能依次读取数据,DataSet中的数据可以任意读取和修改.DataReader对象有一个很重要的方法Read,它是个布尔值,作用是读取下一条数据,当布尔值为 ...

  8. 多线程不重复读取数据_用 PHP 实现多线程编程

    (给PHP开发者加星标,提升PHP技能) 转自:腾讯云(枕边书) cloud.tencent.com/developer/article/1012783 1.前言 前些天帮同事查一个问题,第一次接触到 ...

  9. live555从RTSP服务器读取数据到使用接收到的数据流程分析

    本文在linux环境下编译live555工程,并用cgdb调试工具对live555工程中的testProgs目录下的openRTSP的执行过程进行了跟踪分析,直到将从socket端读取视频数据并保存为 ...

最新文章

  1. 如何高效读论文?剑桥CS教授亲授“三遍论”
  2. oracle系列(三)oracle的配置与管理
  3. python和office_Python在office开发中的应用
  4. JAVA异常处理、常用类、反射、集合
  5. javaweb宿舍管理系统源码_宿舍信息管理系统展示
  6. appcrash事件怎么解决_解决问题的最佳办法,是让问题不再是问题
  7. wordpress模板-Blocksy主题模板V1.8.3.4
  8. 《算法之美》の链表问题の单向链表的反转
  9. postman怎么传session_Day 47: 不搞懂Cookie和session誓不罢休
  10. android+5+镜像,1 下载AOSP(Android)镜像
  11. Android开源框架Universal-Image-Loader完全解析(三)
  12. Ubuntu 16.04 安装QQ, TIM
  13. cocosCreator 动态设置tiledMap碰撞区域
  14. 软件项目管理实用教程(人民邮电出版)第一章课后习题
  15. h5分享图片到微信好友、微信朋友圈、qq好友功能
  16. 实验06 主成分分析法
  17. 一键快速打开IE的Internet选项->连接->局域网设置
  18. 科学家首次3D生物打印出血管化肿瘤,并成功使用免疫疗法治疗
  19. Python 实现三维建模工具(上)
  20. vue字符串生成二维码的相关组件

热门文章

  1. 用java编写xml通讯录实现增_删_改_查实验报告_mybatis中的xml方式增删改查
  2. BSTR LPSTR LPWSTR CString VARIANT COleVariant variant t CC
  3. 非拉丁诞生计算机,计算机发展史——史前计算机
  4. 全球有哪些优秀的设计网站?
  5. Zabbix server: Utilization of http poller processes over 75% 问题解决。
  6. 用遗传算法优化垃圾收集策略
  7. 征文 | 一个奋斗者的学习之路
  8. 学习单片机从这里开始
  9. 正则表达式_Pattern_Marcher_System类_Date\SimpleDateFormat
  10. tcp accept函数