Vous n'êtes pas identifié(e).
Bonsoir !
Je suis actuellement étudiant en informatique et pour le besoin d'un projet, je me dois de configurer une base PostgreSQL en local. J'ai choisi de le faire avec phpPgAdmin sous Wamp, mais le problème est que l'arborescence de la BDD est bizarre, ce qui fait que je n'arrive pas à récupérer les tables de la base.
Voici la structure de la base T3 sous pgAdmin III : https://dl.dropboxusercontent.com/u/616 … ostgre.png
En rouge : les tables récupérées mais que je ne veux pas
En vert : les 2 tables que je souhaite récupérer
Voici la partie du code concerné (en JAVA) :
try {
Class.forName("org.postgresql.Driver");
try {
Connection c = DriverManager.getConnection("jdbc:postgresql://localhost:5432/T3","postgres", "root");
DatabaseMetaData md = null;
ResultSet res;
// Initialisation de la variable de méta données
try {
md = c.getMetaData();
} catch (SQLException e1) {
e1.printStackTrace();
}
try {
res = md.getTables(null, null, "%", null);
while (res.next()) {
System.out.println(res.getString("TABLE_NAME");
}
}catch (SQLException e) {
e.printStackTrace();
}
} catch (SQLException e) {
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Quelqu'un aurait une idée ? Merci.
Hors ligne
Bonjour,
vous devriez essayer en spécifiant le schéma «public» (2ème argument de getTables() ) plutôt que tous les schémas.
J'ai également déplacé le sujet dans la partie Java du forum, plus approprié pour cette question.
Julien.
https://rjuju.github.io/
Hors ligne
Bonsoir.
... et ça marche ! Avec cette ligne : res = md.getTables(null, "public", "%", new String[] {"TABLE"});
J'ai une petite question supplémentaire, le "public" est spécifique à quoi ? phpPgAdmin ? Wamp ? Ou carrément PostgreSQL (ça m'étonnerait) ? Simplement pour savoir si ça fonctionnera sur la base de données de mon prof
En tout cas, merci pour cette réponse rapide et efficace !
Hors ligne
Je ne connais pas assez java pour savoir comment se comporte cette fonction avec d'autres moteurs, mais cela devrait être similaires sur la majorité d'entre eux. En effet, toutes les informations que doit stocker le moteur (liste des tables, liste des colonnes etc) le sont sous forme de tables. Avec postgres, tout ceci est stocké dans le schéma «pg_catalog» (avec les mêmes informations de manière plus normalisées dans le schéma «information_schema».
En forçant la recherche des tables dans le schéma public, vous n'avez plus que vos propres tables. Par contre, si vous stockez des tables dans d'autres schémas, il faudra exécuter la fonction sur chacun de vos schémas.
Julien.
https://rjuju.github.io/
Hors ligne