ADO.Net SqlDataReader類

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,如下所示 -
ADO.Net

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