• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ADO.NETのSqlDataReaderをADOのRecordSetのように使いたい)

ADO.NETのSqlDataReaderをADOのRecordSetのように使いたい

このQ&Aのポイント
  • SqlDataReaderについての質問なのですが、ADOでのレコードセットであった、EOFプロパティ(それに該当するものも)が見当たらず困っています。
  • レコードを最後まで書き出すことは、while(DataReader.read = True)でもできますが、ループの中に判定を入れて、条件次第ではレコードを進めないということができません。
  • ADO.NETのときはDO UNTIL RecordSet.Eof = True と、RecordSet.nextを組みせて柔軟に書き出しができていた分、ちょっと不便に感じています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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