【发布时间】:2013-12-24 07:22:15
【问题描述】:
我在打印 if 语句时遇到此错误
索引超出了数组的范围
代码:
Private Sub radsingle_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles radsingle.CheckedChanged
With comDB
.CommandText = SQL
rdDB = .ExecuteReader
End With
While rdDB.Read
If rdDB(1).ToString = txtptp.SelectedItem.ToString Then
txtcdays.Text = rdDB(2).ToString.Trim
'Radmulti.Checked = False
End If
End While
rdDB.Close()
End Sub
这段代码有什么需要修改的地方吗?
【问题讨论】:
-
Datareader 索引从 0 开始。您确定 2 是有效列吗?为什么不使用
rdDB.Item("columnName")? -
提供实际的 SQL 会有所帮助,就像告诉我们错误发生在哪一行一样。我猜
rdDB(2)是问题所在,并假设您的选择中只有 2 列。DataReader上的索引是从 0 开始的。 -
我还会按照@abhitalks 的建议在调用
Read之前检查是否存在行
标签: vb.net