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();
}
}
}
}
執行上面範例程式碼,得到以下結果 -