0

DataReaderを返し、次のコードを使用して完全に反復処理するとします。

While Reader.Read
    Dim x as string = Reader.GetString("x")
End While

.Read()を呼び出さに、Whileループの後に繰り返されたかどうかを判断できるようにしたいと思います。その理由は、.Read()が呼び出されると、自動的に次の行に進むためです。読者が完全に繰り返されていない状況がある場合、私はそれを次の行に進めたくありません。読者が完全に読まれたかどうかを知る方法があるようです。

4

4 に答える 4

0

私はあなたが探していると思います:HasRows、これはあなたがDataReaderがそれから読んでいる結果を持っているかどうかを決定することを可能にします。

if(Reader.HasRows) {}
于 2013-03-13T11:17:49.457 に答える
0

質問のコメントのスティーブによると、これは重複しているようです:

Read()を実行せずにC#のDataReaderでEOFを検出する方法

スティーブは答えに彼のコメントを入れたくないので、私はこのリンクで私自身の質問に答えています。質問を削除しますが、回答があるので許可しません。これが私の質問/回答の比率に影響を与えたくないので、ここにあります。

于 2013-03-16T04:27:51.527 に答える
0

それは間違っています。

If there is a circumstance where the reader hasn't completely been iterated through

リーダーまで繰り返します。

使用する場合、

If reader.read
//
End if

一度だけ読む

于 2013-03-13T11:18:51.320 に答える
0

以下Datareaderのようなものにデータをロードすることで、データを反復処理できます。DataTable

 Dim DtTbl As DataTable = New DataTable

 'Load Your DataReader into a Datatable
 DtTbl .Load(rdr) 

 'And Here You can itereate through Your data like below
 For Each xDataRow As DataRow In DtTbl .Rows
      MsgBox(xDataRow.Item("COLUMN_NAME"))
 Next

[datareader:からにデータをロードするとdatatable、はdatareader自動的に閉じられます。しかし同時にdatatable、制約を数えながら、それを何度も繰り返すことができます。]

于 2013-03-13T12:05:18.397 に答える