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類
