Database “为什么?”;从字符串“转换”;ID";输入整数无效";在我的节目上表演?
我试图在ID组合框的帮助下,在文本框上显示我的数据库。但是,每当我运行程序时,从字符串“ID”转换为整数类型的错误“无效”总是出现。我该怎么办Database “为什么?”;从字符串“转换”;ID";输入整数无效";在我的节目上表演?,database,vb.net,string,basic,Database,Vb.net,String,Basic,我试图在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;Da
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")
非常感谢你 GetName()函数从结果集中获取表示列号的序号(整数)。看见您正在传入一个字符串,因此出现错误。您想用列号来调用GetValue()函数。使用顺序位置是纯邪恶的。为什么?首先,如果将来更改数据库的结构,可能会导致程序崩溃。第二,如果您返回50个字段,并且在六个月后尝试调试代码,则必须在SELECT语句中开始计算字段数(如果您使用序数表示法,则只需指定字段,以便确定顺序) 如果你要使用序数位置,那么我建议你做如下的事情
Dim sId = reader.GetName(reader.GetOrdinal("ID"))
它现在起作用了!非常感谢你!不久前我一直在使用GetValue()函数,但我不知道要在那里输入的是列号。谢谢