0

私はこれを説明するために最善を尽くしますが、確かに私は何ヶ月もあまり試みていないので、錆びているだけでなく、一緒にいるのはよくありませんでした。

私はビジュアルWeb開発者とaspを使用していますが、vbはSQLデータベースの背後にあるコードです。

たとえば、テーブルから列を選択すると、次のようになります。

sqlCmd.CommandText = "SELECT Username, W1, W2, W3, W4 FROM tablename"

このテーブルに複数の行があり、これらの列にデータがあるとします。

私がデータリーダーを実行するとき、または私がどのように表示されたか、私はdrを次のように宣言します:

Dim dr As Data.SqlClient.SqlDataReader

次のような選択したアイテムを操作できます。

dr.item(0)
dr.item(1)

ただし、操作できるアイテムは、選択したアイテムの最初の行だけです。テーブル内のすべての行を選択するにはどうすればよいですか。または、dr.itemを使用して、またはdr.item(0)がテーブルの2番目の行のユーザー名になるように次の行に移動するように指示することで、複数の行のデータを処理するにはどうすればよいですか。

それが理にかなっていることを願っています。これがばかげた質問である場合は申し訳ありません。お時間をいただき、よろしくお願いいたします。みんなありがとう。

4

2 に答える 2

4

SqlDataReader.Readリーダーを次のレコードに進め、true他に少なくとも 1 行ある場合に戻ります。

Using conn = New SqlClient.SqlConnection(connString)
    Using cmd = New SqlClient.SqlCommand("SELECT Username, W1, W2, W3, W4 FROM tablename", conn)
        conn.Open()
        Using dr = cmd.ExecuteReader()
            While dr.Read()
                Dim UserName As String = dr.GetString(0)
                ' ... '
            End While
        End Using
    End Using        
End Using

できるだけ早くUsing実装するものを破棄するために使用します。IDisposableまた、暗黙的に接続を閉じます。

編集:を使用してDataTable

テーブル内のすべての行を選択する方法

上記のDataReaderアプローチはうまく機能しますが、とにかくすべての行を選択する必要があり、すべてをメモリにロードしても問題ない場合は、DataTable代わりに a を使用できます。次に、配列やリストなどのインデクサーを介して各行にアクセスすることもできます。

Dim tblUsers = New DataTable()
Using conn = New SqlClient.SqlConnection(connString)
    Using da = New SqlClient.SqlDataAdapter("SELECT Username, W1, W2, W3, W4 FROM tablename", conn)
        da.Fill(tblUsers)
    End Using
End Using
' access a row via index: '
Dim row10 As DataRow = tblUsers.Rows(9)
Dim user10 = row10.Field(Of String)("Username")
' of course you can also iterate all rows: '
For Each row As DataRow In tblUsers.Rows
    Dim userName = row.Field(Of String)("Username")
Next
于 2012-09-01T22:44:19.930 に答える
1

データ テーブルの行を反復処理するには、次のメソッドを使用する必要があります。

while dr.read()
 Dim col1=dr.item(0)
 Dim col2=dr.item(1)
End while

すべての行の各属性ができるようにします。

于 2012-09-01T22:53:37.397 に答える