是否可以显示 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 标记中,然后在任何浏览器中照常显示图像?

是否可以使用从服务器 A(我们将其视为主服务器)生成的二进制日志文件设置 MYSQL 复制到服务器 B

有啥方法可以优化这个 mysql 查询?

是否可以在溢出的 QTableWidgetItem 中首先显示字符串的右侧?