C# DataReader读取查询
C# DataReader:读取查询结果
在C# 中 DataReader 类的作用是读取查询结果,与在《C# Command》一节中介绍的 Command 类
中的 ExecuteReader 方法一起使用。
下面来介绍一下 DataReader 类中常用的属性和方法,以及如何使用该类查询表中的数据。
DataReader 类概述
DataReader 类在 System.Data.SqlClient 命名空间中,对应的类是 SqlDataReader,主要用于读取表
中的查询结果,并且是以只读方式读取的(即不能修改 DataReader 中存放的数据)。
正是由于 DataReader 类的特殊的读取方式,其访问数据的速度比较快,占用的服务器资源比较少。
SqlDataReader 类中常用的属性和方法如下表所示。
属性或方法 |
说明 |
FieldCount |
属性,获取当前行中的列数 |
HasRows |
属性,获取 DataReader 中是否包含数据 |
IsClosed |
属性,获取 DataReader 的状态是否为已经被关闭 |
Read |
方法,让 DataReader 对象前进到下一条记录 |
Close |
方法,关闭 DataReader 对象 |
Get XXX(inti) |
方法,获取指定列的值,其中XXX代表的是数据类型。例如获取当前行第1列 double 类型的值,获取方法为GetDouble(o) |
使用 DataReader 类读取查询结果
在使用 DataReader 类读取查询结果时需要注意,当查询结果仅为一条时,可以使用 if 语句查询
DataReader 对象中的数据,如果返回值是多条数据,需要通过 while 语句遍历 DataReader 对象中
的数据。
在使用 DataReader 类读取查询结果时需要通过以下步骤完成:
1) 执行 SqlCommand 对象中的 ExecuteReader 方法
具体代码如下。
SplDataReader dr=SqlCommand 类实例 .ExecuteReader();
2) 遍历 SqlDataReader 中的结果
SqlDataReader 类中提供的 Read 方法用于判断其是否有值,并指向 SqlDataReader 结果中的下一条记录。
dr.Read()
如果返回值为 True,则可以读取该条记录,否则无法读取。
在读取记录时,要根据表中的数据类型来读取表中相应的列。
3) 关闭 SqlDataReader
下面通过实例来演示 SqlDataReader 类的使用。
【实例】根据用户姓名查询用户的编号和密码,并将编号和密码显示在标签控件 (Label) 上。
根据姓名查询用户信息的界面如下图所示。
在该界面中默认情况下显示“没有符合条件的结果”,如果根据文本框中输入的用户名能查询到指定用
户的信息,则将默认文字替换成用户编号和密码。
实现该功能的代码 如下。
//"查询"按钮单击事件
private void button1_Click(Object sender,EventArgs e)
{//编写数据库连接串string connStr ="Data Source=.;Initial Catalog=test;User ID=sa;Password=sa123456"//创建 SqlConnection的实例SqlDataReader dr = null;try{conn = new SqlConnection(connStr);//打开数据库连接conn.Open();string sql = "select id,password from userinfo where name='{0}'";//填充Sql语句sql = string.Format(sql,textBox1.Text);//执行Sql语句dr = cmd.ExecuteReader();//判断SQL语句是否执行成功if(dr.Read()){//读取指定用户名对应的用户编号和密码string msg = “用户编号:”+dr[0]+"密码"+dr[1];//将msg的值显示在标签上label2.Text = msg;}}catch(Exception ex){MexxageBox.Show("查询失败!"+ex.Message);}finally{if(dr != null){//判断dr不为空,关闭SplDataReader对象dr.Close();}if(conn != null){//关闭数据库连接conn.Close();}}
}
运行该窗体,效果如下图所示。
从上面的运行效果可以看出,“张三”用户对应的用户编号为 1、密码为 123456。
需要注意的是,实现上述功能的要求是用户表中的用户名是唯一的,以避免出现查询错误。
C# DataReader读取查询相关推荐
- DataReader:读取查询结果
1)DataReader概念: DataReader 类在 MySql.Data.MySqlClient命名空间中,对应的类是 MysqlDataReader, 主要用于读取表中的查询结果,并且是以只 ...
- 在AngularJS中读取查询参数的最简洁方法是什么?
本文翻译自:What's the most concise way to read query parameters in AngularJS? I'd like to read the values ...
- WINCC SQL报警记录和变量记录数据读取查询
WINCC SQL报警记录和变量记录数据读取查询 按时间查询报警记录 用到控件为listView,textbox,progctrl,ImageComboCtrl Sub X6309X94AE1X000 ...
- 更新安全补丁后无法读取查询导入Excel问题解决说明书
由于微软在2017-10-10左右更新了安全补丁(KB4041678,KB4041681) 从而更新了Microsoft JETDatabase Engine导致asp.asp.net等无法读取Exc ...
- datatable 创建列赋值_DataTable创建行和列,DataReader读取
public DataTable read() { string str = "select id,UserName,UserPwd from Users"; //SQL语句 Sq ...
- 使用datareader’读取Yahoo财经数据
一.环境 window10.Python3.6 二.问题 在<利用Python进行数据分析>一书中,学习到pandas这一章节,利用书中的方法去获取雅虎数据会出现以下问题: 问题一: im ...
- asp.net中读取数据库中的数据可以使用DataReader和DataSet 2种方式(初学者望大家不要笑我)...
在asp.net中,读取数据库中的数据可以使用DataReader和DataSet 2种方式, 两者的差异如下: 使用Dataset对象读取数据大致需要以下5个步骤: (1)建立数据库 ...
- EFCore查缺补漏(二):查询
相关文章: EFCore查缺补漏 第 20 轮 TechEmpower 评测结果出炉了,ASP.NET Core 的 Plaintext 成绩名列前茅,带着 EFCore 的测试却在 Single q ...
- SQL那些事儿(十二)--DATASET 与 DATAREADER区别
DataReader和DataSet最大的区别在于,DataReader使用时始终占用SqlConnection(俗称:非断开式连接),在线操作数据库时,任何对SqlConnection的操作都会引发 ...
最新文章
- 区块链的安全软肋是什么?
- 静态方法只能通过类名调用吗?
- python fileinput_python fileinput模块
- springboot使用hibernate validator校验
- 从实例入手学习Vue-router的使用-实现音乐导航菜单切换
- 阿里云主机CentOS添加硬盘
- 【问底】徐汉彬:PHP7和HHVM的性能之争
- 苹果Mac上的6 款值得开机启动的工具
- PPT的视频由于无编码解码器无法播放问题
- 2021 绩效管理必读
- 推送流程(极光推送)
- docker onlyoffice7.1.1 word excel ppt在线编辑、在线预览_添加中文字体和中文字号_02
- 错误:没有找到合适的设备:没有找到可用于链接System eth0 的设备
- linux复制并重命名文件
- MySQL5.7 固态盘性能设置_MySQL 5.7 安装完成后,立即要调整的性能选项
- 学生课程管理系统html界面,学生课程管理系统手机微信页面模板
- 多元统计分析最短距离法_(完整word版)多元统计分析模拟试题
- java中的saturn_Saturn简介及架构介绍
- .net 使用ClickOne方式发布的应用程序无法启动的解决办法
- nginx负载均衡配置,宕机自动切换方式