1

我在我的 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))

带有以下描述:输入数组长于此表中的列数。

看到的人??

4

1 回答 1

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()
于 2013-08-29T15:23:53.523 回答