ADO.Net的SqlDataReader
類用于從SQL Server數(shù)據(jù)庫讀取數(shù)據(jù)。它從SQL Server數(shù)據(jù)庫讀取僅向前行的數(shù)據(jù)流中的數(shù)據(jù)。它是封閉的類,所以不能被繼承。它繼承了DbDataReader
類并實(shí)現(xiàn)了IDisposable
接口。
SqlDataReader的簽名
public class SqlDataReader : System.Data.Common.DbDataReader, IDisposable
SqlDataReader類的屬性
編號 | 屬性 | 描述 |
---|---|---|
1 | Connection |
它用于獲取與SqlDataReader 關(guān)聯(lián)的SqlConnection 。 |
2 | Depth |
它被用來獲取一個表示當(dāng)前行的嵌套深度的值。 |
3 | FieldCount |
它用于獲取當(dāng)前行中的列數(shù)。 |
4 | HasRows |
它用于獲取一個值,該值指示SqlDataReader 是否包含一行或多行。 |
5 | IsClosed |
它用于檢索布爾值,該值指示指定的SqlDataReader 實(shí)例是否已關(guān)閉。 |
6 | Item[String] |
它用于以給定列名稱的原始格式獲取指定列的值。 |
7 | Item[Int32] |
它用于以給定列序號的原始格式獲取指定列的值。 |
8 | RecordsAffected |
它用于通過執(zhí)行Transact-SQL語句來獲取更改,插入或刪除的行數(shù)。 |
9 | VisibleFieldCount |
它用于獲取SqlDataReader 中未隱藏的字段數(shù)。 |
SqlDataReader類的屬性
編號 | 屬性 | 描述 |
---|---|---|
1 | Close() |
它用于關(guān)閉SqlDataReader 對象。 |
2 | GetBoolean(Int32) |
它用于以布爾值的形式獲取指定列的值。 |
3 | GetByte(Int32) |
它用于獲取指定列的值作為一個字節(jié)。 |
4 | GetChar(Int32) |
它用于獲取指定列的值作為單個字符。 |
5 | GetDateTime(Int32) |
它用于獲取指定列的值作為DateTime 對象。 |
6 | GetDecimal(Int32) |
它用于獲取指定列的值作為Decimal 對象。 |
7 | GetDouble(Int32) |
它用于獲取指定列的值作為雙精度浮點(diǎn)數(shù)。 |
8 | GetFloat(Int32) |
它用于獲取指定列的值作為單精度浮點(diǎn)數(shù)。 |
9 | GetName(Int32) |
它用于獲取指定列的名稱。 |
10 | GetSchemaTable() |
它用于獲取描述SqlDataReader 的列元數(shù)據(jù)的DataTable 對象。 |
11 | GetValue(Int32) |
它用于以本機(jī)格式獲取指定列的值。 |
12 | GetValues(Object[]) |
它用于使用當(dāng)前行的列值填充對象數(shù)組。 |
13 | NextResult() |
當(dāng)讀取SQL語句的結(jié)果時,它用來獲得下一個結(jié)果。 |
14 | Read() |
它用于從SQL Server數(shù)據(jù)庫中讀取記錄。 |
要創(chuàng)建一個SqlDataReader
實(shí)例,則必須調(diào)用SqlCommand
對象的ExecuteReader
方法。
在下面的程序中,使用SqlDataReader
從SQL Server獲取數(shù)據(jù)。創(chuàng)建一個C#控制臺應(yīng)用項(xiàng)目:AdoNetSqlDataReader,如下所示 -
C#代碼實(shí)現(xiàn)如下 -
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("當(dāng)前 student_info 表中存有以下學(xué)生信息:" );
// Executing the SQL query
SqlDataReader sdr = cm.ExecuteReader();
while (sdr.Read())
{
Console.WriteLine("學(xué)生編號:" + sdr["id"] +" 學(xué)生姓名:" + sdr["name"] + " " + sdr["email"]);
}
}
catch (Exception e)
{
Console.WriteLine("OOPs, something went wrong." + e);
}
// Closing the connection
finally
{
con.Close();
}
}
}
}
執(zhí)行上面示例代碼,得到以下結(jié)果 -