提供了一种从数据库读取仅正向数据行流的方法。
System.Object
System.MarshalByRefObject
System.Data.Common.DbDataReader
IBM.Data.DB2.DB2DataReader
[Visual Basic]
NotInheritable Public Class DB2DataReader
Inherits MarshalByRefObject
Implements IDataReader, IDisposable, IDataRecord, IEnumerable
[C#]
public sealed class DB2DataReader : MarshalByRefObject,
IDataReader, IDisposable, IDataRecord, IEnumerable
[C++]
public __gc __sealed class DB2DataReader : public
MarshalByRefObject, IDataReader, IDisposable, IDataRecord,
IEnumerable
[JScript]
public class DB2DataReader extends MarshalByRefObject implements
IDataReader, IDisposable, IDataRecord, IEnumerable
要创建 DB2DataReader,必须调用 DB2Command 对象的 DB2Command.ExecuteReader 方法,而不是直接使用构造函数。
可以同时访问使用同一个 DB2Connection 实例的多个 DB2DataReader 实例中的数据。每个 DB2DataReader 实例都必须与它自己的 DB2Command 实例相关联。
在读取数据期间由另一进程或线程对结果集所作的更改对于 DB2DataReader 的用户可能是可视的。但是,精确的行为与时间相关。
如果应用程序需要从多个方向浏览结果集,或者插入、更新和删除行,那么可以使用 DB2ResultSet 实例。
在关闭 DB2DataReader 之后,IsClosed 和 RecordsAffected 是唯一可以调用的属性。在某些情况下,必须调用 Close 才能调用 RecordsAffected。
[Visual Basic, C#] 以下示例将创建 DB2Connection、DB2Command 和 DB2DataReader。该示例读取数据并将它写入控制台。最后,该示例关闭 DB2DataReader,然后关闭 DB2Connection。
[Visual Basic]
Public Sub ReadMyData(myConnString As String)
Dim mySelectQuery As String = "SELECT SALES, SALES_PERSON FROM SALES"
Dim myConnection As New DB2Connection(myConnString)
Dim myCommand As New DB2Command(mySelectQuery, myConnection)
myConnection.Open()
Dim myReader As DB2DataReader
myReader = myCommand.ExecuteReader()
' Always call Read before accessing data.
While myReader.Read()
Console.WriteLine(myReader.GetInt32(0).ToString() + ", " _
+ myReader.GetString(1))
End While
' always call Close when done reading.
myReader.Close()
' Close the connection when done with it.
myConnection.Close()
End Sub
[C#]
public void ReadMyData(string myConnString) {
string mySelectQuery = "SELECT SALES, SALES_PERSON FROM SALES";
DB2Connection myConnection = new DB2Connection(myConnString);
DB2Command myCommand = new DB2Command(mySelectQuery,myConnection);
myConnection.Open();
DB2DataReader myReader;
myReader = myCommand.ExecuteReader();
// Always call Read before accessing data.
while (myReader.Read()) {
Console.WriteLine(myReader.GetInt32(0) + ", " + myReader.GetString(1));
}
// always call Close when done reading.
myReader.Close();
// Close the connection when done with it.
myConnection.Close();
}
此类型的任何公用静态(Visual Basic 中的 Shared)成员对于多线程操作都是安全的。 不保证任何实例成员均为线程安全。