我正在尝试在文本框中显示我的数据库,借助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() 函数。