[摘抄]
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