44 votes

Comment analyser une URL JDBC pour obtenir le nom d’hôte, le port, etc. ?

Comment analyser une URL JDBC (oracle ou sqlserver) pour obtenir le nom d’hôte, le port et le nom de la base de données. Les formats de l’URL sont différents.

67voto

brettw Points 2811

Commencez par quelque chose comme ceci:

 String url = « jdbc:derby://localhost:1527/netld;collation=TERRITORY_BASED:PRIMARY »; Chaîne cleanURI = url.substring(5); URI uri = URI.create(cleanURI); System.out.println(uri.getScheme()); System.out.println(uri.getHost()); System.out.println(uri.getPort()); System.out.println(uri.getPath()); 

Résultat de ce qui précède:

 derbylocalhost1527 /netld;collation=TERRITORY_BASED:PRIMARY 

6voto

timbaileyjones Points 69

Cela n’a pas fonctionné pour moi. J’ai mis au point ces méthodes, basées sur l’hypothèse que le nom d’hôte et le port sont toujours reliés entre eux par un deux-points. Cette hypothèse vaut pour toutes les bases de données que j’ai à traiter au travail (Oracle, Vertica, MySQL, etc.). Mais cela ne fonctionne probablement pas pour quelque chose qui n’atteint pas un port réseau.

1voto

J’utilise cette classe dans mes projets. L’utilisation est vraiment simple.

1voto

JPC Points 11

Sachez que la réponse de @brettw peut échouer pour certaines URL jdbc valides. Si le nom d’hôte contient un trait de soulignement, uri getHost() renvoie null (voir ici) et getPost() renvoie -1.

Pour contourner ce problème, j’ai ajouté une vérification pour l’hôte null:

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X