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

时间:2015-02-02 08:47:05

标签: mysql database vb.net combobox

我想用我的数据库“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个项目(与我的数据库中的表格数相同)。但是显示的是:

Error

如何使用表格的确切名称填充我的组合框而不是这样?我尝试将.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个额外的空值。参考这张图片:

ERROR 2

1 个答案:

答案 0 :(得分:1)

如果我是对的,传递给你的组合框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