使用 VB 中的数据库表填充组合框

Populate a combobox with tables of a database in VB

我想用我的数据库 "converter" 的表名填充我的组合框,该数据库有 3 个表。我正在使用以下代码:

conn.ConnectionString = "server=localhost;userid=root;password=NewPass;database=converter"
    Try
        conn.Open()

        command.Connection = conn
        command.CommandText = "SHOW TABLES"

        adapter = New MySqlDataAdapter(command.CommandText, conn)
        adapter.SelectCommand = command
        adapter.Fill(dt)

        ComboBox1.DataSource = dt
        ComboBox1.DisplayMember = "column_name"
        ComboBox1.ValueMember = "column_name"

    Catch ex As Exception

    End Try

此代码在组合框中填充 3 个项目(这与我的数据库中的表数相同)。但是显示的是这样的:

我怎样才能用我的表的确切名称填充我的组合框,而不是像这样?我尝试将 .toString 放在我的 dt 上,但效果不佳。

谁能帮帮我?先感谢您。 :)

编辑 我使用了史蒂夫的方法,并且能够获得这些值。我使用了这个代码。

conn.ConnectionString = "server=localhost;userid=root;password=NewPass;database=converter"
    Try
        conn.Open()

        command.Connection = conn
        command.CommandText = "SHOW TABLES"

        adapter = New MySqlDataAdapter(command.CommandText, conn)
        adapter.SelectCommand = command
        dt = conn.GetSchema("TABLES")
        adapter.Fill(dt)

        ComboBox1.DataSource = dt
        ComboBox1.DisplayMember = "table_name"
        ComboBox1.ValueMember = "table_name"

    Catch ex As Exception

    End Try

但现在它显示了 3 个额外的空值。参考这张图片:

如果我是对的,传递给组合框 DisplayMember 和 ValueMember 的正确值是

Tables_in_converter

换句话说,您的命令返回的唯一列的名称是使用固定文本 "Tables_in_" 后跟 <databasename>

自动构建的

如果您想使用不同的方法,您可以通过这种方式调用连接对象的 GetSchema 方法

using cnn = new MySqlConnection(...)
    cnn.Open()
    Dim dt = cnn.GetSchema("TABLES")

    ComboBox1.DataSource = dt
    ComboBox1.DisplayMember = "table_name"
    ComboBox1.ValueMember = "table_name"
End Using