为什么"Conversion from string " ID " to type integer is not valid"显示在我的节目中?



我正在尝试在文本框中显示我的数据库,借助ID的组合框。但是,每当我运行程序时,错误"从字符串"ID"转换为整数类型无效"不断出现。我该怎么办?

Private Sub FormAdd_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    cnn = New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Database.accdb")
    Dim reader As OleDb.OleDbDataReader
    Try
        cnn.Open()
        Dim str As String = "select * from TableName"
        command = New OleDb.OleDbCommand(str, cnn)
        reader = command.ExecuteReader
        While reader.Read
            Dim sId = reader.GetName("ID")
            ComboBox1.Items.Add(sId)
        End While
        cnn.Close()
    Catch ex As OleDb.OleDbException
        MessageBox.Show(ex.Message)
    Finally
        cnn.Dispose()
    End Try
End Sub

Visual Basic 说错误位于此处:

 Dim sId = reader.GetName("ID")

非常感谢!

使用序数位置是完全邪恶的。 为什么? 首先,如果将来更改数据库的结构,可能会导致程序崩溃。 其次,想象你返回了 50 个字段,并且你试图在六个月后调试代码,你必须开始计算 SELECT 语句中的字段(如果你曾经使用序号表示法,你只需要指定字段,这样你就可以确定顺序。

如果你打算使用序数位置,那么我建议你做一些类似的事情

Dim sId = reader.GetName(reader.GetOrdinal("ID"))

GetName() 函数采用一个序号(整数),表示结果集中的列号。 看这里。 您正在传入一个字符串,因此出现错误。您希望改为使用列号调用 GetValue() 函数。

相关内容

最新更新