是否可以显示 MySQL 服务器的数据库,将其放入组合框中,并将其内容显示在 VB.Net 的 datagridview 表中?
Posted
技术标签:
【中文标题】是否可以显示 MySQL 服务器的数据库,将其放入组合框中,并将其内容显示在 VB.Net 的 datagridview 表中?【英文标题】:Is there away to display the databases of a MySQL server, put it in a combobox, and display it's contents in a datagridview table in VB.Net? 【发布时间】:2020-11-27 11:17:52 【问题描述】:我有一个学校项目,我需要解决上述问题,但是,我们的 Prog 老师没有正确地教我们 mysql 并将其绑定到 VB.Net。所以我现在完全不知所措。
我在 Studio 2019 上使用 Visual Basic.Net。
【问题讨论】:
查询INFORMATION_SCHEMA.SCHEMATA
表。
应该显示数据库的哪些内容?
从组合框中选择数据库后,mySQL数据库中的列和表将显示在datagridview表中
查看answer
如果您知道您使用的是什么 RDBMS,这会有所帮助。标题说的是 SQL Server,但问题和标签说的是 MySQL。它是哪一个?请相应地编辑您的问题。
【参考方案1】:
其实这在 MySql 中是相当容易的。通常一个连接字符串会包含一个database=
子句,但在这种情况下,您需要一个所有数据库的列表。
我的字符串看起来像
Private ConStr As String = "server=localhost;user id=xxx;password=xxx"
当然你会引用你的服务器。用户 ID 和密码可能需要具有管理员权限的帐户。
Private Sub DisplayDatabases()
Dim dt As New DataTable
Using cn As New MySqlConnection(ConStr),
cmd As New MySqlCommand("show databases", cn)
cn.Open()
dt.Load(cmd.ExecuteReader)
End Using
ComboBox1.DisplayMember = "Database"
ComboBox1.DataSource = dt
End Sub
Private Sub DisplayTables(DB As String)
Dim dt As New DataTable
Using cn As New MySqlConnection(ConStr),
cmd As New MySqlCommand($"use DB; show tables", cn)
cn.Open()
dt.Load(cmd.ExecuteReader)
End Using
DataGridView1.DataSource = dt
End Sub
用法:
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
DisplayDatabases()
End Sub
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
DisplayTables(ComboBox1.Text)
End Sub
我当然不想向任何用户显示这么多信息。
【讨论】:
tbf,程序只要求数据库中的表,而不是它下面的数据。【参考方案2】:如果您确定服务器是 mySQL,您可以先将 MySql.Data.dll 添加到您的项目中(MySQL 连接器/NET),这里有一些代码可以在您的项目中指导您:
Imports MySql.Data.MySqlClient
Public Class Form2
Private Sub Test()
Dim myConnection As MySqlConnection = New MySqlConnection("server=localhost; user id=root; password=yourpassword; database=yourDB; pooling=false;")
Dim strSQL As String = "SELECT * FROM my_users;"
Dim myDataAdapter As MySqlDataAdapter = New MySqlDataAdapter(strSQL, myConnection)
Dim myDataSet As DataSet = New DataSet()
myDataAdapter.Fill(myDataSet, "my_users")
MySQLDataGrid.DataSource = myDataSet
MySQLDataGrid.DataBind()
End Sub
End Class
【讨论】:
谢谢!但不幸的是,我无法对数据库进行硬编码,因为我需要从表单中选择它。然后,将制作另一个组合框来列出要在 DataGridView 中显示的表格以上是关于是否可以显示 MySQL 服务器的数据库,将其放入组合框中,并将其内容显示在 VB.Net 的 datagridview 表中?的主要内容,如果未能解决你的问题,请参考以下文章
是否可以将链接到文档的类(又名文档类)放入 RSL 并仍将其作为文档类?
从 DialogFragement 获取数据,将其放入 SQLiteDB 并在回收器视图中显示所有结果
是否可以将二进制图像数据放入 html 标记中,然后在任何浏览器中照常显示图像?