2013-03-18 36 views
0

基本上,我有一个VB.NET项目,我连接到远程MySQL服务器。如何找出什么数据库链接到某个特定的ID在VB.NET

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

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

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

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

注:我之所以需要能够有这些变量是因为我打算发布这个工具我的一些朋友,它们有不同的MySQL服务器可以连接到不同的数据库名称等等。由于安全原因,并不是每个人都需要知道数据库的名称。

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

回答

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数据库这一解决方案只会工作,包含一个表,该表显示了服务器上的所有数据库中的所有表。

相关问题