【发布时间】:2014-01-27 07:50:09
【问题描述】:
我从DriverManager.getConnection(...) 收到java.sql.Connection,想知道服务器主机+端口是什么。
如果它相关,我知道它的MYSQL 服务器。
最好的方法是什么?
【问题讨论】:
-
你是对的,没看到。
我从DriverManager.getConnection(...) 收到java.sql.Connection,想知道服务器主机+端口是什么。
如果它相关,我知道它的MYSQL 服务器。
最好的方法是什么?
【问题讨论】:
或者,您可以尝试connection.getMetaData()。这将为您提供一个DatabaseMetaData 对象,您可以从中调用getURL()。 (JavaDoc)
您可以包装连接的提供者,例如使用Commons DBCP
org.apache.commons.dbcp.BasicDataSource 类有 getter 和 setter。 (JavaDoc)
【讨论】:
您可以在 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字段)
【讨论】:
您可以通过以下方式获取主机名和端口名:
con.getMetaData().getURL()
【讨论】:
Connection con = DriverManager.getConnection(connectionUrl, username,
pass);
DatabaseMetaData metaData = con.getMetaData();
String url = metaData.getURL();
此“url”将包含您的主机名和端口名,例如 jdbc:mysql://myhost:3306/mySchema
【讨论】: