ADO.Net的SqlDataReader类用于从SQL Server数据库读取数据。它从SQL Server数据库读取仅向前行的数据流中的数据。它是封闭的类,所以不能被继承。它继承了DbDataReader类并实现了IDisposable接口。
SqlDataReader的签名
public class SqlDataReader : System.Data.Common.DbDataReader, IDisposable
SqlDataReader类的属性
| 编号 | 属性 | 描述 | 
|---|---|---|
| 1 | Connection | 
它用于获取与SqlDataReader关联的SqlConnection。 | 
| 2 | Depth | 
它被用来获取一个表示当前行的嵌套深度的值。 | 
| 3 | FieldCount | 
它用于获取当前行中的列数。 | 
| 4 | HasRows | 
它用于获取一个值,该值指示SqlDataReader是否包含一行或多行。 | 
| 5 | IsClosed | 
它用于检索布尔值,该值指示指定的SqlDataReader实例是否已关闭。 | 
| 6 | Item[String] | 
它用于以给定列名称的原始格式获取指定列的值。 | 
| 7 | Item[Int32] | 
它用于以给定列序号的原始格式获取指定列的值。 | 
| 8 | RecordsAffected | 
它用于通过执行Transact-SQL语句来获取更改,插入或删除的行数。 | 
| 9 | VisibleFieldCount | 
它用于获取SqlDataReader中未隐藏的字段数。 | 
SqlDataReader类的属性
| 编号 | 属性 | 描述 | 
|---|---|---|
| 1 | Close() | 
它用于关闭SqlDataReader对象。 | 
| 2 | GetBoolean(Int32) | 
它用于以布尔值的形式获取指定列的值。 | 
| 3 | GetByte(Int32) | 
它用于获取指定列的值作为一个字节。 | 
| 4 | GetChar(Int32) | 
它用于获取指定列的值作为单个字符。 | 
| 5 | GetDateTime(Int32) | 
它用于获取指定列的值作为DateTime对象。 | 
| 6 | GetDecimal(Int32) | 
它用于获取指定列的值作为Decimal对象。 | 
| 7 | GetDouble(Int32) | 
它用于获取指定列的值作为双精度浮点数。 | 
| 8 | GetFloat(Int32) | 
它用于获取指定列的值作为单精度浮点数。 | 
| 9 | GetName(Int32) | 
它用于获取指定列的名称。 | 
| 10 | GetSchemaTable() | 
它用于获取描述SqlDataReader的列元数据的DataTable对象。 | 
| 11 | GetValue(Int32) | 
它用于以本机格式获取指定列的值。 | 
| 12 | GetValues(Object[]) | 
它用于使用当前行的列值填充对象数组。 | 
| 13 | NextResult() | 
当读取SQL语句的结果时,它用来获得下一个结果。 | 
| 14 | Read() | 
它用于从SQL Server数据库中读取记录。 | 
要创建一个SqlDataReader实例,则必须调用SqlCommand对象的ExecuteReader方法。
示例
在下面的程序中,使用SqlDataReader从SQL Server获取数据。创建一个C#控制台应用项目:AdoNetSqlDataReader,如下所示 -
C#代码实现如下 -
using System;
using System.Data.SqlClient;
namespace AdoNetSqlDataReader
{
    class Program
    {
        static void Main(string[] args)
        {
            new Program().GetData();
        }
        public void GetData()
        {
            SqlConnection con = null;
            try
            {
                // Creating Connection  
                con = new SqlConnection("data source=.; database=student; integrated security=SSPI");
                // writing sql query  
                SqlCommand cm = new SqlCommand("select * from student_info", con);
                // Opening Connection  
                con.Open();
                Console.WriteLine("当前 student_info 表中存有以下学生信息:" );
                // Executing the SQL query  
                SqlDataReader sdr = cm.ExecuteReader();
                while (sdr.Read())
                {
                    Console.WriteLine("学生编号:" + sdr["id"] +" 学生姓名:" + sdr["name"] + " " + sdr["email"]);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("OOPs, something went wrong." + e);
            }
            // Closing the connection  
            finally
            {
                con.Close();
            }
        }
    }
}
执行上面示例代码,得到以下结果 -

						上一篇:
								ADO.Net SqlCommand类
												下一篇:
								ADO.Net DataSet类
												
						
						
					
					
					