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类
