使用 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
我想用我的数据库 "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