ADO.NET 四(DataReader)
DataReader 类概述
DataReader 类对应MSSQLSERVER在 System.Data.SqlClient 命名空间中,对应的类是 SqlDataReader,主要用于读取表中的查询结果,并且是以只读方式读取的(即不能修改 DataReader 中存放的数据)。
正是由于 DataReader 类的特殊的读取方式,其访问数据的速度比较快,占用的服务器资源比较少。
SqlDataReader 类中常用的属性和方法如下表所示。
属性或方法 |
说明 |
---|---|
FieldCount |
属性,获取当前行中的列数 |
HasRows |
属性,获取 DataReader 中是否包含数据 |
IsClosed |
属性,获取 DataReader 的状态是否为已经被关闭 |
Read |
方法,让 DataReader 对象前进到下一条记录 |
Close |
方法,关闭 DataReader 对象 |
Get XXX (int i) |
方法,获取指定列的值,其中XXX代表的是数据类型。例如获取当前行第1列 double 类型的值,获取方法为GetDouble(o) |
使用 DataReader 类读取查询结果
在使用 DataReader 类读取查询结果时需要注意,当查询结果仅为一条时,可以使用 if 语句查询 DataReader 对象中的数据,如果返回值是多条数据,需要通过 while 语句遍历 DataReader 对象中的数据。
在使用 DataReader 类读取查询结果时需要通过以下步骤完成:
1) 执行 SqlCommand 对象中的 ExecuteReader 方法
具体代码如下。
SqlDataReader dr=SqlCommand 类实例 .ExecuteReader();
2) 遍历 SqlDataReader 中的结果
SqlDataReader 类中提供的 Read 方法用于判断其是否有值,并指向 SqlDataReader 结果中的下一条记录。
dr.Read()
如果返回值为 True,则可以读取该条记录,否则无法读取。
在读取记录时,要根据表中的数据类型来读取表中相应的列。
3) 关闭 SqlDataReader
dr.Close()
eg:
string sql = "SELECT * FROM UserAlertTable;";
SqlDataReader reader = null;
//这里使用Tuple元组存储下,list:得到的所有记录的集合。
List<Tuple<long, DateTime, long>> list = new List<Tuple<long, DateTime, long>>();
using (SqlConnection con = new SqlConnection(str))
{
con.Open();
SqlCommand cmd = new SqlCommand(sql,con);
reader = cmd.ExecuteReader();
while (reader.Read())
{
long id = reader["id"] == DBNull.Value ? -1 : (long)reader["id"];
DateTime datetime = reader["datetime"] == DBNull.Value ? DateTime.MinValue : (DateTime)reader["datetime"];
long number = reader["number"] == DBNull.Value ? -1 : (long)reader["number"];
Tuple<long, DateTime, long> tp = Tuple.Create<long, DateTime, long>(id, datetime, number);
list.Add(tp);
}
}
if (reader != null)
{
reader.Close();
}
ReadKey();
最新文章
- webUploader react 接口设计
- Android开发之百度地图--环境搭建
- spring-HelloWorld
- # 20145334赵文豪 《Java程序设计》第7周学习总结
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(31)-MVC使用RDL报表
- 【JavsScript】一个元素绑定多个事件
- symbol(s) not found for architecture x86_64
- Web 技术人员需知的Web 缓存知识
- ASPNET中实现在线用户检测(使用后台守护线程)
- 多态VI的创建
- cobbler部署
- SGU 156. Strange Graph(欧拉路)
- Clementine 12.0 的使用(因为比较少用,项目中用到才开始接触写一下自己的使用方法)
- 在Java中打开浏览器
- 蓝桥网试题 java 基础练习 杨辉三角形
- AngularJS - 依赖注入(Dependency Injection)
- PPT在HTML网页上播放方法
- 商品详情页系统的Servlet3异步化实践
- 虚拟环境jupyter notebook使用【virtualenv环境】
- 旅行商问题(TSP)、最长路径问题与哈密尔顿回路之间的联系(归约)
热门文章
- 2019暑假Java学习笔记(二)
- 在IDEA上对SpringBoot项目配置Devtools实现热部署
- 解决:E: Could not get lock /var/lib/dpkg/lock
- TensorFlow之卷积函数(conv2d)
- [转]使用apt安装nodejs10
- 安裝TA-Lib到想要罵髒話
- [LeetCode] 100. Same Tree 相同树
- Node.js 多线程完全指南
- 记录一次使用iisnode部署node项目遇到的坑!
- 托马斯&#183;贝叶斯 (Thomas Bayes)