アプリ版:「スタンプのみでお礼する」機能のリリースについて

いつもお世話になっております。

SqlDataReaderについての質問なのですが、ADOでのレコードセットであった、EOFプロパティ(それに該当するものも)が見当たらず困っています。

レコードを最後まで書き出すことは、while(DataReader.read = True)でもできますが、ループの中に判定を入れて、条件次第ではレコードを進めないということができません。

ADO.NETのときはDO UNTIL RecordSet.Eof = True と、RecordSet.nextを組みせて柔軟に書き出しができていた分、ちょっと不便に感じています。

EOFと同様のプロパティというのもあるのでしょうか?

A 回答 (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
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!