- ベストアンサー
ADO.NETのSqlDataReaderをADOのRecordSetのように使いたい
- SqlDataReaderについての質問なのですが、ADOでのレコードセットであった、EOFプロパティ(それに該当するものも)が見当たらず困っています。
- レコードを最後まで書き出すことは、while(DataReader.read = True)でもできますが、ループの中に判定を入れて、条件次第ではレコードを進めないということができません。
- ADO.NETのときはDO UNTIL RecordSet.Eof = True と、RecordSet.nextを組みせて柔軟に書き出しができていた分、ちょっと不便に感じています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
お世話になります。 RecordSet.Eof = True DataReader.Read = False と同じです。 > ループの中に判定を入れて、条件次第ではレコードを進めないということができません。 以下の例では、SQL Server 2000 の Northwind データベースの Cusomers テーブルから値を取得し、 標準出力に 1 列目の値を出力します。 ただし、 1 列目の値が "ANTON" の場合、読み込み及び出力の処理を中断しています。 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim con As SqlClient.SqlConnection = New SqlClient.SqlConnection(My.Settings.NorthwindConnectionString) Try con.Open() Dim sc As SqlClient.SqlCommand = New SqlClient.SqlCommand("SELECT * FROM Customers", con) Try Dim reader As SqlClient.SqlDataReader = sc.ExecuteReader() Try While (reader.Read()) Dim str As String = reader.GetString(0) Console.WriteLine(str) If str = "ANTON" Then reader.Close() Exit While End If End While Finally If Not reader Is Nothing Then reader.Close() End Try Finally If Not sc Is Nothing Then sc.Dispose() End Try Finally If Not con Is Nothing Then con.Close() : con.Dispose() End Try End Sub