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