2012-02-23 11 views
3

上のアドバイスが必要:この行で奇妙な配列の問題に.....私はSQLデータベースからデータを読んでいて、接続が発生したが、以下のエラーが発生し、この

{"Index was outside the bounds of the array."} 

を:

TextBox2.Text = TextBox2.Text & sqRdr.GetValue(22) & vbCrLf 

私のテーブルのすべての列を数えて、彼らが正確に(22)と判明したので、これを手伝ってください。

+1

サンプルコードで 'は何を示してsqRdr.FieldCount'のでしょうか? –

+0

sqRdr.GetValue(21) –

+0

@JonSkeet the FieldCountが表示されます22 – Armaan

答えて

3

のDataReaderの列序数は0ベースとされているので、22日の欄にはなりsqRdr.GetValue(21)

+0

他の列は数字で記されています – Armaan

+0

from(0) – Armaan

+1

@Armaan:あなたはそれが何を意味するかはっきりしませんが、これは正しい答えです。最初の列をGetValue(0)で取得し、2番目の列をGetValue(1)などのGetValue(21)で22番目の列まで取得します。 –

1
あなたが将来的には、列の数を減少/増加しているとき、あなたのDataReaderがケースでこの問題を回避するには、以下のようにする必要があり

....

DR["ColumnName"] 

SqlDataReaderののこの[文字列名]は次のようになります。

以下は

...

Using con As System.Data.SqlClient.SqlConnection = New SqlConnection("YourConnection string") 
    con.Open() 
    Dim cmd As New SqlCommand() 
    Dim expression As String = "Parameter value" 
    cmd.CommandType = CommandType.StoredProcedure 
    cmd.CommandText = "Your Stored Procedure" 
    cmd.Parameters.Add("Your Parameter Name", SqlDbType.VarChar).Value = expression 
    cmd.Connection = con 
    Using dr As IDataReader = cmd.ExecuteReader() 
       'You code like ....dr["YourColumnName"] 
     If dr.Read() Then 
     End If 
    End Using 
End Using 
+0

感謝します。 – Armaan

関連する問題