-4

私は VB6.0 に取り組んでおり、そのコードを VB.NET.Alomost に変換しようとしましたが、このコード行を変換するのに混乱したときに成功しました。

If Not ds.EOF Then
      ds.MoveFirst()
      ds.MoveLast()
End If

このコード行を変換するのを手伝ってくれる人はいますか?オンラインの VB6 から VB.NET への変換ツールを教えてください。

RecordSet の代わりに SQlDataReader を使用しました。このコード行を見ながら、ds.MoveFirst(),ds.MoveLast() は、recordSet のカーソル位置を最後のレコードに移動することを意味すると思います

4

1 に答える 1

2

VB.NET レコードセットは、DataReaderたとえばSqlDataReader. リーダーに複数のブロックが含まれてReadいる場合にリーダーを次のデータ ブロックに進めるメソッドがあり、bool読み取るデータのブロックがまだあるかどうかを示す を返します。

例えば:

Using con = New SqlConnection(connectionString)
    Using cmd = New SqlCommand("SELECT IntCol,StringCol,BoolCol FROM Table WHERE ...", con)
        con.Open()
        Using rdr = cmd.ExecuteReader()
            While rdr.Read()
                Dim IntCol = rdr.GetInt32(0)
                Dim StringCol = rdr.GetString(1)
                Dim BoolCol = rdr.GetBoolean(2)
            End While
        End Using
    End Using
End Using

ADO.NET にはMoveFirstorがないことに注意してください。MoveLast

リーダーを最後の位置に移動しないでください。つまり、最後のレコードだけが必要な場合でも、データベースからすべてのデータを読み取ることになります。SELECT TOP 1 ... ORDER BY ...そもそも使用して最後のものだけを選択してみませんか? SqlDataReaderこれが、これらのメソッドがない理由です。

別の方法はDataTable、メモリ内でそれを行いたい場合に a を使用することです。その後、最後の行にアクセスできますtable.Rows(table.Rows.Count-1)DataTableビアをロードできますSqlDataAdapter.Fill(DataTable)

于 2012-08-29T10:16:03.120 に答える