Mysql vb.net将具有不同记录的单个数据库表中的数据库记录显示到不同的组合框中
vb.net将具有不同记录的单个数据库表中的数据库记录显示到不同的组合框中 我有两个组合框,我想在每个组合框中显示不同的记录,我在数据库中只使用一个表,这段代码显示错误,嗯 我的表架构:Mysql vb.net将具有不同记录的单个数据库表中的数据库记录显示到不同的组合框中,mysql,vb.net,combobox,Mysql,Vb.net,Combobox,vb.net将具有不同记录的单个数据库表中的数据库记录显示到不同的组合框中 我有两个组合框,我想在每个组合框中显示不同的记录,我在数据库中只使用一个表,这段代码显示错误,嗯 我的表架构: | cid | cpos…….| cfname | cmname | clname | cyr | cparty| |1.|主席|约翰……|方舟……|史密斯。| 3……|荣耀……| Private Sub Form4_Load(ByVal sender As System.Object, ByVal e As
| cid | cpos…….| cfname | cmname | clname | cyr | cparty|
|1.|主席|约翰……|方舟……|史密斯。| 3……|荣耀……|
Private Sub Form4_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
con.ConnectionString = ("server=localhost;user id=root;database=db")
Try
con.Open()
With cmd
.Connection = con
.CommandText = "SELECT CONCAT_WS(' ', cfname, cmname, clname,'from', cparty WHERE cpos like='President') AS fullname from candidate;"
End With
Dim dt As New DataTable
With ComboBox1
da.SelectCommand = cmd
da.Fill(dt)
.DataSource = dt
.DisplayMember = "fullname"
.ValueMember = "fullname"
End With
With cmd
.Connection = con
.CommandText = "SELECT CONCAT_WS(' ', cfname, cmname, clname,'from', cparty WHERE cpos like='Vice President') AS fullname from candidate;"
End With
With ComboBox2
da.SelectCommand = cmd
da.Fill(dt)
.DataSource = dt
.DisplayMember = "fullname"
.ValueMember = "fullname"
End With
Catch ex As Exception
MsgBox(ex.Message)
End Try
con.Close()
End Sub
看看你之前的问题,我认为你的命令文本应该是这样的
.Connection = con
.CommandText = "SELECT CONCAT_WS(' ', cfname, cmname, clname, cparty) as fullname " & _
"from candidate WHERE cpos like='Vice President'"
这将把四列cfname、cmname、clname和cparty
中的信息合并到一个名为fullname的列中,然后cpos字段上的where条件将提取“副总裁”或“总裁”角色
我还建议更改组合框上属性设置的顺序
.DisplayMember = "fullname"
.ValueMember = "fullname"
.DataSource = dt
您还可以避免以这种方式执行两个查询以从数据库检索相同的信息
With cmd
.Connection = con
' If you have only President and Vice President in the candidate table
' you could remove the where clause
.CommandText = "SELECT CONCAT_WS(' ', cfname, cmname, clname, cparty) as fullname, " & _
"cpos, cid from candidate WHERE cpos like='Vice President' OR " & _
"cpos like 'President'"
End With
然后使用DataView作为组合框的数据源来分离数据
da.SelectCommand = cmd
da.Fill(dt)
With ComboBox1
Dim dv = new DataView(dt, "cpos like 'President'", "", DataViewRowState.CurrentRows)
.DisplayMember = "fullname"
.ValueMember = "fullname"
.DataSource = dv
End With
With ComboBox2
Dim dv1 = new DataView(dt, "cpos like 'Vice President'", "", DataViewRowState.CurrentRows)
.DisplayMember = "fullname"
.ValueMember = "fullname"
.DataSource = dv1
End With
很抱歉,这些疑问毫无意义。你想做什么?我想在第一个组合框中显示总统,在第二个组合框中显示副总统,记录在数据库中的同一个表中。你能添加表候选人的完整模式(每个字段的名称及其类型)吗。我编辑了我的帖子,它不工作了?Combobox2中没有显示副总裁,它在
中有错误,“像‘副总裁’这样的CPO”“,DataViewRowState.CurrentRows)
和.DataSource=dv1
中,它说字符串常量必须以双引号结束。请刷新页面,可能在您使用此代码时我仍在修复小的拼写错误…..找不到列CPO?嗯,对,我们需要将其添加到查询中,再次更新答案