2017-02-21 25 views
0
Try 
    Dim conn As New MySql.Data.MySqlClient.MySqlConnection(myConnectionString) 
    conn.Open() 
    dbQuery = "select * from main_table" 
    myCommand.CommandText = dbQuery 
    myCommand.Connection = conn 
    Dim myReader As MySqlDataReader 
    myReader = myCommand.ExecuteReader() 
    While myReader.Read() 
     row_count = row_count + 1 
    End While 
    Catch ex As MySql.Data.MySqlClient.MySqlException 
     MessageBox.Show(ex.Message) 
    Finally 
     conn.Close() 
    End Try 

    MessageBox.Show(row_count) 
    conn.Close() 

上記のコードを実行すると、正しい行数が表示されます。しかし、私はデータを一度に1行でarraylistに取得しようとしています。以下のコードを使用してもエラーは表示されませんが、最初の行を読み込み、実行を停止します。MYSQLデータリーダーからvb.netのarraylistにデータを取得するには

Try 
    Dim conn As New MySql.Data.MySqlClient.MySqlConnection(myConnectionString) 
    conn.Open() 
    dbQuery = "select * from main_table" 
    myCommand.CommandText = dbQuery 
    myCommand.Connection = conn 
    Dim myReader As MySqlDataReader 
    myReader = myCommand.ExecuteReader() 
    While myReader.Read() 
     For x As Integer = 0 To myReader.FieldCount 
      col_array.Add(myReader.GetString(x)) 
     Next 
    End While 
    Catch ex As MySql.Data.MySqlClient.MySqlException 
     MessageBox.Show(ex.Message) 
    Finally 
     conn.Close() 
    End Try 

    conn.Close() 

最初の行が読み込まれた後、それが停止している理由を私は理解していない

+0

DataTableを入力するだけではどうですか? DTは、特にDB DataRowを保持するように設計されており、そこからカウントを取得できます。 – Plutonix

+0

forループは、FieldCountに0を使用します。最初の行の最後にIndexOutOfRangeExceptionを与えていますか? –

+0

@Plutonix、私は配列を使用する必要があります。 – user2721815

答えて

0

ようにコメント:0からFieldCountに反復処理

は、最初の後に解除されますIndexOutOfRangeExceptionがスローされます行。それはmyReader.FieldCount - 1で終了する

For x As Integer = 0 To myReader.FieldCount 
    col_array.Add(myReader.GetString(x)) 
Next 

変更は、この問題を解決します。

関連する問題