对于reader的处理
// 摘要:
// 关闭 System.Data.SqlClient.SqlDataReader 对象。
public override void Close();
//
// 摘要:
// 检索一个布尔值,该值指示是否已关闭指定的 System.Data.SqlClient.SqlDataReader 实例。
//
// 返回结果:
// 如果指定的 System.Data.SqlClient.SqlDataReader 实例已关闭,则为 true;否则为 false。
public override bool IsClosed { get; }
对查询记录的处理
//
// 摘要:
// 获取执行 Transact-SQL 语句所更改、插入或删除的行数。
//
// 返回结果:
// 已更改、插入或删除的行数;如果没有任何行受到影响或语句失败,则为 0;-1 表示 SELECT 语句。
public override int RecordsAffected { get; }
//
// 摘要: 查询
// 获取一个值,该值指示 System.Data.SqlClient.SqlDataReader 是否包含一行或多行。
//
// 返回结果:
// 如果 System.Data.SqlClient.SqlDataReader 包含一行或多行,则为 true;否则为 false。
public override bool HasRows { get; }
//
// 摘要:
// 当读取批处理 Transact-SQL 语句的结果时,使数据读取器前进到下一个结果。
//
// 返回结果:
// 如果存在多个结果集,则为 true;否则为 false。
public override bool NextResult();
对行的处理
//
// 摘要:
// 使 System.Data.SqlClient.SqlDataReader 前进到下一条记录。
//
// 返回结果:
// 如果存在多个行,则为 true;否则为 false。
//
// 异常:
// System.Data.SqlClient.SqlException:
// 行命令文本时,SQL Server 返回了错误。
public override bool Read();
//
// 摘要:
// 获取当前行中的列数。
//
// 返回结果:
// 如果未放在有效的记录集中,则为 0;否则为当前行中的列数。 默认值为 -1。
//
// 异常:
// System.NotSupportedException:
// 没有对 SQL Server 实例的当前连接。
public override int FieldCount { get; }
对行中列的处理
//
// 摘要:
// 获取一个值,该值指示列中是否包含不存在的或缺少的值。
//
// 参数:
// i:
// 从零开始的列序号。
//
// 返回结果:
// 如果指定的列值与 System.DBNull 等效,则为 true;否则为 false。
public override bool IsDBNull(int i);
//
// 摘要:
// 获取一个表示指定列的数据类型的字符串。
//
// 参数:
// i:
// 要查找的列的从零开始的序号位置。
//
// 返回结果:
// 表示指定列的数据类型的字符串。
public override string GetDataTypeName(int i);
//
// 摘要:
// 获取指定列的名称。
//
// 参数:
// i:
// 从零开始的列序号。
//
// 返回结果:
// 指定列的名称。
public override string GetName(int i);
//
// 摘要:
// 获取以本机格式表示的指定列的值。
//
// 参数:
// i:
// 从零开始的列序号。
//
// 返回结果:
// 对于 null 数据库列,此方法返回 System.DBNull。
public override object GetValue(int i);
对GetValue函数的分解处理
//
// 摘要:
// 获取指定列的布尔值形式的值。
//
// 参数:
// i:
// 从零开始的列序号。
//
// 返回结果:
// 列的值。
//
// 异常:
// System.InvalidCastException:
// 指定的强制转换无效。
public override bool GetBoolean(int i);
//
// 摘要:
// 获取指定列的字节形式的值。
//
// 参数:
// i:
// 从零开始的列序号。
//
// 返回结果:
// 指定列的字节形式的值。
//
// 异常:
// System.InvalidCastException:
// 指定的强制转换无效。
public override byte GetByte(int i);
//
// 摘要:
// 从指定的列偏移量将字节流读入缓冲区,并将其作为从给定的缓冲区偏移量开始的数组。
//
// 参数:
// i:
// 从零开始的列序号。
//
// dataIndex:
// 字段中的索引,从其开始读取操作。
//
// buffer:
// 要将字节流读入的缓冲区。
//
// bufferIndex:
// buffer 中写入操作开始位置的索引。
//
// length:
// 要复制到缓冲区中的最大长度。
//
// 返回结果:
// 读取的实际字节数。
public override char GetChar(int i);
//
// 摘要:
// 获取指定列的 System.DateTime 对象形式的值。
//
// 参数:
// i:
// 从零开始的列序号。
//
// 返回结果:
// 指定列的值。
//
// 异常:
// System.InvalidCastException:
// 指定的强制转换无效。
public override DateTime GetDateTime(int i);
//
// 摘要:
// 获取指定列的 System.Decimal 对象形式的值。
//
// 参数:
// i:
// 从零开始的列序号。
//
// 返回结果:
// 指定列的值。
//
// 异常:
// System.InvalidCastException:
// 指定的强制转换无效。
public override decimal GetDecimal(int i);
//
// 摘要:
// 获取指定列的双精度浮点数形式的值。
//
// 参数:
// i:
// 从零开始的列序号。
//
// 返回结果:
// 指定列的值。
//
// 异常:
// System.InvalidCastException:
// 指定的强制转换无效。
public override double GetDouble(int i);
//
// 摘要:
// 获取指定列的单精度浮点数形式的值。
//
// 参数:
// i:
// 从零开始的列序号。
//
// 返回结果:
// 指定列的值。
//
// 异常:
// System.InvalidCastException:
// 指定的强制转换无效。
public override float GetFloat(int i);
//
// 摘要:
// 获取指定列的 16 位有符号整数形式的值。
//
// 参数:
// i:
// 从零开始的列序号。
//
// 返回结果:
// 指定列的值。
//
// 异常:
// System.InvalidCastException:
// 指定的强制转换无效。
public override short GetInt16(int i);
//
// 摘要:
// 获取指定列的 32 位有符号整数形式的值。
//
// 参数:
// i:
// 从零开始的列序号。
//
// 返回结果:
// 指定列的值。
//
// 异常:
// System.InvalidCastException:
// 指定的强制转换无效。
public override int GetInt32(int i);
//
// 摘要:
// 获取指定列的 64 位有符号整数形式的值。
//
// 参数:
// i:
// 从零开始的列序号。
//
// 返回结果:
// 指定列的值。
//
// 异常:
// System.InvalidCastException:
// 指定的强制转换无效。
public override long GetInt64(int i);
//
// 摘要:
// 检索作为 System.IO.Stream 的二进制、图像、varbinary、UDT 和变量数据类型。
//
// 参数:
// i:
// 从零开始的列序号。
//
// 返回结果:
// 流对象。
//
// 异常:
// System.InvalidOperationException:
// 连接中断或在数据检索期间已关闭。 数据检索期间System.Data.SqlClient.SqlDataReader 处于关闭状态。 没有可读取的就绪数据
// (例如,第一个 System.Data.SqlClient.SqlDataReader.Read() 未被调用或返回错误)。 按顺序模式尝试读取上一步骤中读取的列。
// 没有正在进行的异步操作。 以顺序模式运行时,这适用于所有 Get* 方法,读取流时也可对其进行调用。
//
// System.IndexOutOfRangeException:
// 尝试读取不存在的列。
//
// System.InvalidCastException:
// 返回的类型不属于以下类型之一: binary image varbinary UDT
public override Stream GetStream(int i);
//
// 摘要:
// 获取指定列的字符串形式的值。
//
// 参数:
// i:
// 从零开始的列序号。
//
// 返回结果:
// 指定列的值。
//
// 异常:
// System.InvalidCastException:
// 指定的强制转换无效。
public override string GetString(int i);
//
// 摘要:
// 检索作为 System.IO.TextReader 的 Char、 NChar、 NText、 NVarChar、 text、 varChar 和
// Variant data types。
//
// 参数:
// i:
// 要检索的列。
//
// 返回结果:
// 返回的对象。
//
// 异常:
// System.InvalidOperationException:
// 连接中断或在数据检索期间已关闭。 数据检索期间System.Data.SqlClient.SqlDataReader 处于关闭状态。 没有可读取的就绪数据
// (例如,第一个 System.Data.SqlClient.SqlDataReader.Read() 未被调用或返回错误)。 按顺序模式尝试读取上一步骤中读取的列。
// 没有正在进行的异步操作。 以顺序模式运行时,这适用于所有 Get* 方法,读取流时也可对其进行调用。
//
// System.IndexOutOfRangeException:
// 尝试读取不存在的列。
//
// System.InvalidCastException:
// 返回的类型不属于以下类型之一: char nchar ntext nvarchar text varchar
public override TextReader GetTextReader(int i);
//
// 摘要:
// 检索指定列的 System.TimeSpan 对象形式的值。
//
// 参数:
// i:
// 从零开始的列序号。
//
// 返回结果:
// 指定列的值。
//
// 异常:
// System.InvalidCastException:
// 指定的强制转换无效。
public virtual TimeSpan GetTimeSpan(int i);
以上函数均来自官方的说明文档,去除了不常用和看不懂的.可以用来实现自定义的数据库返回处理程序.