我从java.sql.Connection
收到DriverManager.getConnection(...)
,想知道服务器主机+端口是什么。
如果相关,我知道它的MYSQL
服务器。
最好的方法是什么?
答案 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