IndexOutOfRangeException未处理VBNET

Fvcundo

我有一个从数据库检索CurrentYearyear_now和NextYear的表单year_next它给我错误'IndexOutOfRangeException未处理',因为我认为没有要检索的行。我想做的是,即使表中没有数据,我仍然可以加载表单并给我一个要显示的空值。我尽我所能使一切正常,但无法解决问题。无论如何有重新编码。

 Sub LoadSchoolYear()
    Dim conn1 As New MySqlConnection("server=localhost; userid=root; password=root; database=uecp_cens")
    Dim dAdapter1 As New MySqlDataAdapter("SELECT year_now, year_next FROM uecp_cens.tblschoolyear", conn1)
    Dim dTable1 As New DataSet
    Try
        dAdapter1.Fill(dTable1, "uecp_cens")
        lblYearNow.Text = dTable1.Tables("uecp_cens").Rows(0).Item(0).ToString
        lblYearNext.Text = dTable1.Tables("uecp_cens").Rows(0).Item(1).ToString
    Catch ex As MySqlException
        MsgBox(ex.Message)
    Finally
        conn1.Dispose()
    End Try
End Sub

任何帮助表示赞赏。

蒂姆·施密特(Tim Schmelter)

如果您提到的表中没有行,则会出现该错误。因此,请检查Rows.Count

Dim yearNow As String = Nothing
Dim yearNext As String = Nothing
If dTable1.Tables("uecp_cens").Rows.Count > 0 Then 
    yearNow = dTable1.Tables("uecp_cens").Rows(0).Item(0).ToString()
    yearNext = dTable1.Tables("uecp_cens").Rows(0).Item(1).ToString()
End If
lblYearNow.Text = yearNow
lblYearNext.Text = yearNext 

相反,如果该字段NULL在数据库中,则DBNull.Value使用时会出现异常Rows(0).Item(0).ToString()然后使用DataRow.IsNull来检查它:

If dTable1.Tables("uecp_cens").Rows.Count > 0 Then 
    Dim row = dTable1.Tables("uecp_cens").Rows(0)
    yearNow = If(row.IsNull(0), Nothing,  row.Item(0).ToString())
    yearNext = If(row.IsNull(1), Nothing,  row.Item(1).ToString())
End If

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章