ADO.NET知识总结5---SqlDataReader介绍

6.1 SqlDataReader介绍

SqlDataReader: 提供一种从SQLServer数据库中读取只进的数据流

特点快速的、轻量级、只读的、遍历访问每一行数据的数据流

一个方向、一行一行的、不能向后读取,不能修改数据

缺点不灵活,只适合数据小的情况,读取数据,一直占用连接

读取方式

Read() 获取下一行的数据,返回true——有数据

当调用Read()方法返回False——不再有数据行

注意

1.连接对象需一直保持Open状态,若连接关闭,是不能读取数据的。
使用完成后,应该马上调用close(),不然Reader对象会一直占用连接的。

2.读取时尽量使用与数据库字段类型相匹配的方法来取值,会减少因类型不一致而增加类型转换操作性能损耗

3.cmd.ExecuteReader()获取存储过程的返回值或输出参数,先调用reader.Close(),然后才能获取参数的值

4.没有读取到末尾就要关闭reader对象时,先调用 cmd.Cancel(),然后再调用reader. Close().

常用属性

Conection: 获取与Reader对象相关的SqlConnection

FiedCount: 当前行中的列数

HasRows:reader是否包含行。 true 包含一行或多行 ;false 没有数据

IsClosed:reader对象是否已关闭true:关闭 ; false:打开

Item[int]:通过列序号取值,给定列序号的情况,获取指定列的值 dr[1] object类型

Item[String]: 通过列名取值,获取指定列的值 dr["UserName"] object类型

常用方法

Close() 关闭DataReader对象

GetInt32(i)--根据数据类型相匹配的方法获取指定列的值 ,对应的还有GetString(i),GetDecimal(i),.....

GetFieldType(i) 获取数据类型的Type信息

GetName(i) 获取指定列的列名

GetOrdinal(列名) 获取指定列名的列序号

Read() 使dr前进到下一条记录

NextResult() 使dr 前进到下一个结果集

SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
while (reader.Read()) --前进到下一条记录
  {
    int id =reader.GetInt32(0);//读第一列的值,通过序号读取
    string cardNo = reader["CardNo"].ToString();//通过列名读取值
    int typeId = (int)reader["CTypeId"];//通过列名读取
    int col_index=reader.GetOrdinal("CTypeName");//获取列序号
    string typeName = reader.GetString(col_index);//获取列序号读取
    string colName=reader.GetName(4);//获取指定列的列名
    decimal balance=(decimal)reader[colName];
}
reader.NextResult();//前进到下一个结果集
.....
reader.Close();//关闭reader
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值