SqlDataReader类
一、常用属性
| 名称 | 说明 |
|---|---|
| Depth | 获取一个值,用于指示当前行的嵌套深度。 |
| FieldCount | 获取当前行中的列数。 |
| HasRows | 获取一个值,该值指示 SqlDataReader 是否有行。 |
| IsClosed | 指定的SqlDataReader 实例是否已关闭。 |
| Item[Int32] | 获取指定列(数字索引),通常在While.Read()中使用。 |
| Item[String] | 获取指定列(字符串索引), 通常在While.Read()中使用。 |
| RecordsAffected | 获取执行 T-SQL 语句所更改、插入或删除的行数。 |
| VisibleFieldCount | 获取 SqlDataReader 中未隐藏的字段的数目。 |
示例:

class Program
{
static void Main(string[] args)
{
string str = "server=.;database=JunTest;uid=sa;pwd=123;Asynchronous Processing=true";
SqlConnection conn = new SqlConnection(str); //创建连接
SqlCommand cmd = conn.CreateCommand(); //创建SqlCommand对象
cmd.CommandText = "SELECT * FROM Person";
conn.Open(); //打开连接 using (SqlDataReader reader = cmd.ExecuteReader())
{
Console.WriteLine(reader.FieldCount); //2 获取列数
Console.WriteLine(reader.Depth); //0 嵌套深度
Console.WriteLine(reader.HasRows); //true 是否包含行
Console.WriteLine(reader.IsClosed); //false SqlDataReader是否关闭
Console.WriteLine(reader.RecordsAffected); //-1 执行T-SQL语句所插入、修改、删除的行数
Console.WriteLine(reader.VisibleFieldCount); //2 未隐藏的字段数目(一共就两列) while (reader.Read())
{
Console.WriteLine(reader["PersonName"]);
//Console.WriteLine(reader[1]); 通过数字索引或字符串索引访问
}
} conn.Close(); //关闭连接
Console.ReadKey();
}
}

二、常用方法
| 名称 | 说明 |
| Read | 前进到下一记录,异步版本ReadAsync。 |
| GetString | 返回指定类型的值,其他的都类似。 |
| NextResult | 当处理批处理的T-SQL语句时,跳到下一结果,异步版本NextResultAsync。 |
| GetValue | 获得该列的值,返回object类型。 |
| GetValues | 使用当前列指来填充参数中的对象数组。 |
| Close | 关闭 SqlDataReader 对象。 |
示例:

class Program
{
static void Main(string[] args)
{
string str = "server=.;database=JunTest;uid=sa;pwd=123;Asynchronous Processing=true";
SqlConnection conn = new SqlConnection(str); //创建连接
SqlCommand cmd = conn.CreateCommand(); //创建SqlCommand对象
cmd.CommandText = "SELECT * FROM Person";
conn.Open(); //打开连接 using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine(reader.IsDBNull(1)); //是否是null值
Console.WriteLine(reader.GetString(1)); //Get什么类型就返回什么类型,这没啥好说的。
}
Console.WriteLine(reader.GetName(1)); //PersonName 由数字获得列名
Console.WriteLine(reader.GetOrdinal("PersonName")); //1 由列名获取其在reader中的数字索引 if (reader.NextResult())
{
Console.WriteLine(reader.GetString(1));
}
}
conn.Close(); //关闭连接
Console.ReadKey();
}
}

SqlDataReader类的更多相关文章
- C#反射实现 C# 反射 判断类的延伸类型 使用代码生成工具Database2Sharp快速生成工作流模块控制器和视图代码 C# ADO.NET的SqlDataReader对象,判断是否包含指定字段 页面中添加锚点的几种方式 .net 简单实用Log4net(多个日志配置文件) C# 常用小点
C#反射实现 一.反射概念: 1.概念: 反射,通俗的讲就是我们在只知道一个对象的内部而不了解内部结构的情况下,通过反射这个技术可以使我们明确这个对象的内部实现. 在.NET中,反射是重要的机制, ...
- ADO.NET(一) 空间 ADO.NET结构 命名空间(车延禄) System.Data—— 所有的一般数据访问类 S(转载)
ADO.NET(一) 空间 ADO.NET结构 命名空间(车延禄)System.Data—— 所有的一般数据访问类System.Data.Common—— 各个数据提供程序共享(或重写)的类Sys ...
- C# ADO.NET的SqlDataReader对象,判断是否包含指定字段
在使用ado.net的SqlDataReader对象时,如果SqlDataReader实例对象中没有对应的字段,则会在那一行报错.而SqlDataReader类又没有判断是否存在指定字段的方法,怎么办 ...
- Ado.NET SqlDataReader详解
ado.net的数据提供程序有三个分别是SqlServer数据提供程序,OLE DB提供程序,ODBC提供程序. 本次记录的是SqlServer提供程序中的一些知识点. ①SqlDataReader必 ...
- 关于SqlDataReader使用的一点疑惑
C#中的SqlDataReader类(System.Data.SqlClient)是用来在保持打开数据库连接的状态下取数据用的 用法如下图: “保持与数据库的连接”这个特性也是SqlDataReade ...
- 黑马程序员_ADO.Net(ExecuteReader,Sql注入与参数添加,DataSet,总结DataSet与SqlDataReader )
转自https://blog.csdn.net/u010796875/article/details/17386131 一.执行有多行结果集的用ExecuteReader SqlDateReader ...
- Java类的继承与多态特性-入门笔记
相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...
- ADO.NET对象的详解
1. Connection 类 和数据库交互,必须连接它.连接帮助指明数据库服务器.数据库名字.用户名.密码,和连接数据库所需要的其它参数.Connection对象会被Command对象使用,这样就能 ...
- ASP.NET中常用的优化性能的方法
1. 数据库访问性能优化 数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源.ASP.NET中提供了连接池( ...
随机推荐
- IC封装图片认识(二):SOP&SOJ
SOP SOP-EIAJ-TYPE-II-14L SSOP SSOP-16L TSOP(Thin Small Outline Package) TSSOP(Thin Shrink Outline Pa ...
- PowerShell 管道和对象成员
2.1 管道 在各种现代的shell中,均支持管道的概念. 管道的最大特点就是: 前一个命令的输出作为后一个命令的输入.cmd.bash均支持管道的概念,这里我就不多说了,下面我们说说PS中 管道 ...
- 【转】图文并茂 Ubuntu使用Thunderbird方法指南
原文网址:http://os.51cto.com/art/201101/243445.htm Ubuntu 是一个启动速度超快.界面友好.安全性好的操作系统,它适用于桌面电脑.笔记本电脑.服务器以及上 ...
- 【转】notepad++设置字体和字体大小
原文网址:http://www.aichengxu.com/view/604 今天很多朋友问我怎么设置notepad++的代码字体和代码字体的大小,习惯了editplus的朋友可能会在notepad+ ...
- 通过实现Comparable接口结合TreeSet来对对象自动排序
经过会遇到这样的情况,对于某个对象数组或者链表要按照一定的规则进行排序,那么我们该怎么做呢? 如遇到这样的需求: 1.需求1 对于学生对象按照年龄进行排序,年龄小的排在前面. 单单看到这样的需求,实现 ...
- linux之chdir函数解析
[lingyun@localhost chdir]$ ls chdir.c [lingyun@localhost chdir]$ cat chdir.c /********************* ...
- 2301: [HAOI2011]Problem b
2301: [HAOI2011]Problem b Time Limit: 50 Sec Memory Limit: 256 MBSubmit: 4164 Solved: 1888[Submit] ...
- 机器设备(dfs)
机器设备 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 Alpha 公司设计出一种节能的机器设备.它的内部结构是由 N 个齿轮组成.整个机器设备有 一个驱动齿轮,当 ...
- 使用WeCloud消息推送接口发送消息NodeJs版
WeCloud是一家初创公司的产品,眼下主要在做Android和IOS消息推送这块.他们提供了用于向设备发送消息的协议,详细协议内容见消息推送协议. 这篇文章将使用NodeJs基于这个推送协议完毕向A ...
- iOS多线程及其感悟
感觉每天都是匆匆忙忙的,每天似乎都是时间不够用一样,可是等真的想要动手敲代码的时候才发现,原来还有好多好多的知识点不是太熟练,所以,人不可以一直感觉自我良好, 有时间就是那种自我感觉良好的心态毁了自己 ...