我有一个带有4个标签的表单,每个标签包含一个datagridview。我想用数据库中的不同表填充这些网格中的每一个,但是查询的结果不断累积,直到最终表包含4个查询的结果。
这是我的代码:
Try
mysqlconn.Open()
Dim query As String
query = "SELECT* from venue"
command = New MySqlCommand(query, mysqlconn)
SDA.SelectCommand = command
SDA.Fill(dbdataset)
bsource.DataSource = dbdataset
DataGridView1.DataSource = bsource
SDA.Update(dbdataset)
query = "SELECT* FROM Decoration"
command = New MySqlCommand(query, mysqlconn)
SDA.SelectCommand = command
SDA.Fill(dbdataset)
bsource.DataSource = dbdataset
DataGridView2.DataSource = bsource
SDA.Update(dbdataset)
query = "SELECT* FROM food_drink"
command = New MySqlCommand(query, mysqlconn)
SDA.SelectCommand = command
SDA.Fill(dbdataset)
bsource.DataSource = dbdataset
DataGridView3.DataSource = bsource
SDA.Update(dbdataset)
query = "SELECT* FROM Entertainment"
command = New MySqlCommand(query, mysqlconn)
SDA.SelectCommand = command
SDA.Fill(dbdataset)
bsource.DataSource = dbdataset
DataGridView4.DataSource = bsource
mysqlconn.Close()
Catch ex As MySqlException
MsgBox(ex.Message)
Finally
mysqlconn.Dispose()
End Try
当我更改它以便每个查询都有自己的datatable(dbdataset)时,我只获取显示最终查询结果的所有datagridviews。
Try
mysqlconn.Open()
Dim query As String
query = "SELECT* from venue"
command = New MySqlCommand(query, mysqlconn)
SDA.SelectCommand = command
SDA.Fill(dbdataset1)
bsource.DataSource = dbdataset1
DataGridView1.DataSource = bsource
SDA.Update(dbdataset1)
query = "SELECT* FROM Decoration"
command = New MySqlCommand(query, mysqlconn)
SDA.SelectCommand = command
SDA.Fill(dbdataset2)
bsource.DataSource = dbdataset2
DataGridView2.DataSource = bsource
SDA.Update(dbdataset2)
query = "SELECT* FROM food_drink"
command = New MySqlCommand(query, mysqlconn)
SDA.SelectCommand = command
SDA.Fill(dbdataset3)
bsource.DataSource = dbdataset3
DataGridView3.DataSource = bsource
SDA.Update(dbdataset3)
query = "SELECT* FROM Entertainment"
command = New MySqlCommand(query, mysqlconn)
SDA.SelectCommand = command
SDA.Fill(dbdataset4)
bsource.DataSource = dbdataset4
DataGridView4.DataSource = bsource
SDA.Update(dbdataset4)
mysqlconn.Close()
Catch ex As MySqlException
MsgBox(ex.Message)
Finally
mysqlconn.Dispose()
End Try
最佳答案
您可以缩小代码长度。在命令中使用多个查询,用分号将它们分开,每个查询将加载到DataTable中。然后将您的网格绑定到正确的数据表:
Try
mysqlconn.Open()
Dim query As String
query = "SELECT* from venue;SELECT* FROM Decoration;SELECT* FROM food_drink;SELECT* FROM Entertainment;"
SDA.SelectCommand = New MySqlCommand(query, mysqlconn)
SDA.Fill(dbdataset)
DataGridView1.DataSource = dbdataset.Tables(0)
DataGridView2.DataSource = dbdataset.Tables(1)
DataGridView3.DataSource = dbdataset.Tables(2)
DataGridView4.DataSource = dbdataset.Tables(3)
mysqlconn.Close()
Catch ex As MySqlException
MsgBox(ex.Message)
Finally
mysqlconn.Dispose()
End Try
您还可以创建4个绑定源并绑定到这些绑定源,而不是直接绑定到表。另外,您还应该处置连接和命令。