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

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類