如何解析 Postgresql JDBC url 以获取主机名、端口和 db_name
Posted
技术标签:
【中文标题】如何解析 Postgresql JDBC url 以获取主机名、端口和 db_name【英文标题】:How to parse a Postgresql JDBC url to get hostname, port and db_name 【发布时间】:2021-01-08 12:20:30 【问题描述】:解析 Postgresql JDBC URL 以获取主机名、端口和数据库名称的最佳方法是什么。
这是这个问题的一个具体案例:How to parse a JDBC url to get hostname,port etc?
【问题讨论】:
【参考方案1】:一种可能是使用Postgresql JDBC driver 来解析URL。 当然,这只有在它是 Postgresql URL 时才有效。
如果提供的 URL 不包含故障转移主机,则可以执行以下操作:
Properties props = org.postgresql.Driver.parseURL("jdbc:postgresql:myDatabase", null);
String host = props.getProperty(PGProperty.PG_HOST.getName());
int port = Integer.parseInt(props.getProperty(PGProperty.PG_PORT.getName()));
String dbName = props.getProperty(PGProperty.PG_DBNAME.getName());
上述调用返回以下属性:PGDBNAME=myDatabase, PGPORT=5432, PGHOST=localhost
如果 URL 包含故障转移主机,则主机属性和端口属性包含多个以逗号分隔的值。比如调用
Properties props = org.postgresql.Driver.parseURL("jdbc:postgresql://host1:5434,host2:5433/database", null);
将返回以下属性:PGDBNAME=database, PGPORT=5434,5433, PGHOST=host1,host2
【讨论】:
我很好奇,这对多主机 URL 有什么影响(请参阅接近末尾的 Connection Fail-over 下的 jdbc.postgresql.org/documentation/head/connect.html)? 感谢您的评论,我不知道故障转移主机。我相应地增强了答案。以上是关于如何解析 Postgresql JDBC url 以获取主机名、端口和 db_name的主要内容,如果未能解决你的问题,请参考以下文章
HikariCP Postgresql 驱动程序声称不接受 JDBC URL