DataReader

[摘抄]
DataReader对象

The DataReader Object

DataSet的一个替代品就是DataReader对象。DataReader提供了一种连接着数据库、只能向前的记录访问方式,它可以执行SQL语句或者存储过程。DataReader是理想的给网页提供只读数据的轻量级对象,例如填充列表,然后断开与后台数据库的连接。

所有DataReader的基础类是DbDataReader,它位于System.Data.Common命名空间中。

从DbDataReader派生而来的类是DataTableReader、OdbcDataReader、OleDbDa- taReader、OracleDataReader、SqlDataReader和SqlCeDataReader。

DbDataReader类有一些用于获得数据信息的属性,例如,FieldCount和HasRows属性。我们最感兴趣的是Item属性,它会返回一个包含行的指定列值的对象。在C#中,Item属性是该类的索引器。

DbDataReader类有许多用于提取数据的方法,它们是通过遍历这个读取器实现的,例如GetBytes、GetData、GetName和GetString。其他重要方法在表10-8中列出。

表10-8  重要的DbDataReader方法

方法名

返回类型

说  明

Close

void

关闭数据读取器。已重载

NextResult

Boolean

当读取批量的SQL语句的结果时,前进到下一个结果集(记录集)如果有更多的结果集,将返回true。有重载

Read

Boolean

前进到下一条记录。如果有更多的记录,将返回true

DataReader是一个很强大的对象,但是有许多方法和属性不会经常使用。大多数时候,使用DataReader来获得和遍历查询结果中的记录。


相关代码:
If dtr.Read Then
    Me.UserName = Normal.HStr(dtr("UserName"))
    Me._LoginName = Normal.HStr(dtr("LoginName"))
    Me.Department_Id = Normal.HStr(dtr("Department_Id"))
    Me.Remark = Normal.HStr(dtr("Remark"))
    Me.Unit = dtr("Unit")
    _Db.CloseDB()
    Return True
Else
    _Db.CloseDB()
    Return False
End If



Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports Microsoft.VisualBasic
Public Class DataReaderSample
Public Shared Sub Main()
    Dim sqlConn As SqlConnection = New SqlConnection("data source=DBServer;initial catalog=Northwind;persist security info=True;user id=sa")
   Dim sqlCmd As SqlCommand = sqlConn.CreateCommand()
   sqlCmd.CommandText = "SELECT EmployeeID, LastName , FirstName FROM Employees"
   sqlConn.Open()
   Dim sqlReader As SqlDataReader = sqlCmd.ExecuteReader()
   Dim intFor As Int32
   For intFor = 0 To sqlReader.FieldCount - 1
   Console.Write(String.Format("{0,-20:G}", sqlReader.GetName(intFor)))
   Next
   Console.WriteLine()
   Do While sqlReader.Read()
   Console.WriteLine(String.Format("{0,-20:G}{1,-20:G}{2,-20:G}", sqlReader.GetInt32(0), sqlReader.GetString(1), sqlReader.GetString(2)))
   Loop
   sqlReader.Close()
   sqlConn.Close()
   Console.Read()
   End Sub
End Class

原文地址:https://www.cnblogs.com/liangyi/p/976553.html