SqlDataReader クラス
SQL Server データベースから行の前方向ストリームを読み取る方法を提供します。このクラスは継承できません。
この型のすべてのメンバの一覧については、SqlDataReader メンバ を参照してください。
System.Object
System.MarshalByRefObject
System.Data.SqlClient.SqlDataReader
NotInheritable Public Class SqlDataReader
Inherits MarshalByRefObject
Implements IEnumerable, IDataReader, IDisposable, IDataRecord
[C#]
public sealed class SqlDataReader : MarshalByRefObject,
IEnumerable, IDataReader, IDisposable, IDataRecord
[C++]
public __gc __sealed class SqlDataReader : public
MarshalByRefObject, IEnumerable, IDataReader, IDisposable,
IDataRecord
[JScript]
public class SqlDataReader extends MarshalByRefObject implements
IEnumerable, IDataReader, IDisposable, IDataRecord
スレッドセーフ
この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。
解説
SqlDataReader を作成するには、コンストラクタを直接使用せずに、 SqlCommand オブジェクトの ExecuteReader メソッドを呼び出す必要があります。
SqlDataReader の使用中は、関連付けられた SqlConnection は、その SqlDataReader によって使用されるためビジー状態になります。この間、 SqlConnection に対して、閉じる以外の操作は実行できません。 SqlDataReader の Close メソッドを呼び出すまでこの状態が続きます。たとえば、 Close を呼び出すまでは、出力パラメータは取得できません。
データの読み取り中に別のプロセスまたはスレッドが結果セットに加えた変更が、 SqlDataReader のユーザーに表示されることがあります。ただし、実際に表示されるかどうかは、タイミングによって決まります。
SqlDataReader を閉じた後に呼び出すことができるのは、 IsClosed プロパティと RecordsAffected プロパティだけです。 RecordsAffected プロパティは、 SqlDataReader が存在している間はいつでも呼び出すことできますが、正しい戻り値を得るために、 RecordsAffected の値を取得する前には、必ず Close を呼び出してください。
メモ パフォーマンスを向上するために、 SqlDataReader は不要なオブジェクトまたは不要なデータのコピーを作成しません。そのため、 GetValue などのメソッドを複数回呼び出すと、同じオブジェクトへの参照が返されます。 GetValue などのメソッドから返されるオブジェクトの基の値を変更する場合は、注意してください。
使用例
[Visual Basic, C#, C++] SqlConnection 、 SqlCommand 、および SqlDataReader を作成する例を次に示します。この例では、データを読み取り、コンソールに出力します。最後に、この例では SqlDataReader を閉じてから、 SqlConnection を閉じます。
Public Sub ReadMyData(myConnString As String)
Dim mySelectQuery As String = "SELECT OrderID, CustomerID FROM Orders"
Dim myConnection As New SqlConnection(myConnString)
Dim myCommand As New SqlCommand(mySelectQuery, myConnection)
myConnection.Open()
Dim myReader As SqlDataReader
myReader = myCommand.ExecuteReader()
' Always call Read before accessing data.
While myReader.Read()
Console.WriteLine((myReader.GetInt32(0) & ", " & myReader.GetString(1)))
End While
' always call Close when done reading.
myReader.Close()
' Close the connection when done with it.
myConnection.Close()
End Sub 'ReadMyData
[C#]
public void ReadMyData(string myConnString) {
string mySelectQuery = "SELECT OrderID, CustomerID FROM Orders";
SqlConnection myConnection = new SqlConnection(myConnString);
SqlCommand myCommand = new SqlCommand(mySelectQuery,myConnection);
myConnection.Open();
SqlDataReader 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();
}
[C++]
public:
void ReadMyData(String* myConnString) {
String* mySelectQuery = S"SELECT OrderID, CustomerID FROM Orders";
SqlConnection* myConnection = new SqlConnection(myConnString);
SqlCommand* myCommand = new SqlCommand(mySelectQuery,myConnection);
myConnection->Open();
SqlDataReader* myReader;
myReader = myCommand->ExecuteReader();
// Always call Read before accessing data.
while (myReader->Read()) {
Console::WriteLine(S"{0}, {1}", __box(myReader->GetInt32(0)), myReader->GetString(1));
}
// always call Close when done reading.
myReader->Close();
// Close the connection when done with it.
myConnection->Close();
}
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
名前空間: System.Data.SqlClient
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET
アセンブリ: System.Data (System.Data.dll 内)