0

基本上,我有一个连接到远程 MySQL 服务器的 VB.NET 项目。

我可以提供的凭据是“服务器 ip”、“端口”、“数据库 ID”、“用户名”和“密码”。

非常基本的东西,除了给出的是 DB ID 而不是实际的 DB 名称。如何检索链接到该 ID 的数据库的名称?

目前我使用这个连接字符串来连接它

connection.ConnectionString = "Host=" & server & ";port=" & port & ";user=" & uname & ";password=" & pword & ";"

注意:我需要能够在变量中包含这些的原因是因为我计划将此工具分发给我的一些朋友,他们有不同的 MySQL 服务器要连接,具有不同的数据库名称等。因为不是每个人都需要由于安全原因,知道数据库被称为什么。

编辑:我可以做的另一件事是让我的程序检查服务器上的每个数据库并返回哪个数据库中有某个表,然后将该输出用于我的程序的其余部分。

4

1 回答 1

0

我找到了一种解决方法,尽管这可能不适用于其他 MySQL 数据库。

我是这样做的:

Public Function sqlConnectTest(ByVal server, port, instance, uname, pword) As Boolean
    Dim connection As MySqlConnection
    connection = New MySqlConnection()
    connection.ConnectionString = "Host=" & server & ";port=" & port & _
";user=" & uname & ";password=" & pword & ";"
    Try
        connection.Open()
        MessageBox.Show("Connection Opened Successfully")
        **Dim stm As String = "SELECT TABLE_SCHEMA from information_schema.TABLES where TABLE_NAME like 'survivor'"**
        Dim cmd As MySqlCommand = New MySqlCommand(stm, connection)
        Dim reader As MySqlDataReader = cmd.ExecuteReader()

        While reader.Read()
            DBname = reader.GetString(0)
        End While
        reader.Close()
        connection.Close()
        Return True
    Catch mysql_error As MySqlException
        MessageBox.Show("Error Connecting to Database: " & mysql_error.Message)
        Return False
    Finally
        connection.Dispose()
    End Try
End Function

显然,该解决方案仅在您拥有 information_schema 数据库时才有效,该数据库包含一个表,该表显示服务器上所有数据库中的所有表。

于 2013-03-18T19:56:37.893 回答