我在我的vb.net项目中遵循了代码 与sql db的连接很好&好的,只有当我尝试填充列表框时才会收到错误
Public Class Form1
Private myTable As New DataTable()
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
GetSerialPortNames()
FillListBox()
'------------
myTable.Columns.Add("naam", GetType(String))
myTable.Columns.Add("waarde", GetType(Integer)) '<<<< change the type of this column to what you actually need instead of integer.
ListBox1.DisplayMember = "naam"
ListBox1.ValueMember = "waarde"
ListBox1.DataSource = myTable
End Sub
和
Private Sub FillListBox()
Dim naam As String
Dim stringConn As String
Dim stringCmd As String
Dim myConn As MySqlConnection
Dim myCmd As MySqlCommand
'Frame your query here.
stringCmd = "SELECT id,naam,voornaam FROM deelnemers WHERE finger = FALSE ORDER BY naam "
'Frame your connection string here.
stringConn = "********************************************"
'Get your connection here.
myConn = New MySqlConnection(stringConn)
'Get a command by using your connection and query.
myCmd = New MySqlCommand(stringCmd, myConn)
'Open the connection.
myConn.Open()
'create a reader to store the datum which will be returned from the DB
Dim myReader As MySqlDataReader
'Execute your query using .ExecuteReader()
myReader = myCmd.ExecuteReader()
'Reset your List box here.
ListBox2.Items.Clear()
While (myReader.Read())
'Add the items from db one by one into the list box.
naam = myReader.GetString(1) & " " & myReader.GetString(2)
'ListBox2.Items.Add((naam))
myTable.Rows.Add(naam, myReader.GetString(0))
End While
'Close the reader and the connection.
myReader.Close()
myConn.Close()
End Sub
我在后续行中收到错误
myTable.Rows.Add(naam, myReader.GetString(0))
具有以下描述:输入数组比此表中的列数长。
有人看到了吗?答案 0 :(得分:1)
我怀疑你的myTable
数据表没有任何列......
尝试更改:
While (myReader.Read())
'Add the items from db one by one into the list box.
naam = myReader.GetString(1) & " " & myReader.GetString(2)
'ListBox2.Items.Add((naam))
myTable.Rows.Add(naam, myReader.GetString(0))
End While
到此:
Dim row As DataRow
While (myReader.Read())
'Add the items from db one by one into the list box.
row = myTable.NewRow()
row("naam") = myReader.GetString(1) & " " & myReader.GetString(2)
row("waarde") = myReader.GetString(0)
myTable.Rows.Add(row)
End While
你仍然会收到错误,但至少这样你就会知道哪些列丢失了......
<强>更新强>
另外,改变这个:
FillListBox()
'------------
myTable.Columns.Add("naam", GetType(String))
myTable.Columns.Add("waarde", GetType(Integer)) '<<<< change the type of this column to what you actually need instead of integer.
到此:
'------------
myTable.Columns.Add("naam", GetType(String))
myTable.Columns.Add("waarde", GetType(Integer)) '<<<< change the type of this column to what you actually need instead of integer.
FillListBox()