是否可以从java.sql.Connection获取url或服务器信息

时间:2014-01-27 07:50:10

标签: java mysql jdbc

我从java.sql.Connection收到DriverManager.getConnection(...),想知道服务器主机+端口是什么。
如果相关,我知道它的MYSQL服务器。

最好的方法是什么?

5 个答案:

答案 0 :(得分:2)

或者,您可以尝试connection.getMetaData()。这会为您提供一个DatabaseMetaData对象,您可以从中调用getURL()(JavaDoc)

答案 1 :(得分:0)

您可以包装连接的提供者,例如使用Commons DBCP

班级org.apache.commons.dbcp.BasicDataSource有吸气人和限制者。 (JavaDoc)

答案 2 :(得分:0)

您可以在Connection周围使用其他类,并在您仍然知道它们时填写必填字段:

class WrappedConnection {
   public final String host;
   // ...
   public final Connection connection;

   WrappedConnection(Connection connection, String host, String database) {      
      this.connection = connection;
      this.host = host;
      // ...
   }
}

如果您无法传递自定义数据结构并且必须通过Connection,请使用

public static final WeakHashMap<Connection, WrappedConnection> 

通过此地图,您可以随时轻松获取元数据(在这种情况下不需要Connection字段)

答案 3 :(得分:0)

您可以通过以下方式获取主机名和端口名称:

con.getMetaData().getURL()

答案 4 :(得分:0)

Connection con = DriverManager.getConnection(connectionUrl, username,
                    pass);
DatabaseMetaData metaData = con.getMetaData();
String url = metaData.getURL();

此“url”将包含您的主机名和端口名,如jdbc:mysql:// myhost:3306 / mySchema