-
[JDBC] Existence table
Bonjour a tous.
Je dispose d'une connection a un systeme AS400 qui fonctionne parfaitement.
Je voudrais savoir comment faire pour tester si une table donnee (passee en parametre) existe dans la base de donne.
Je ne vois pas comment faire. Existe t 'il une fonction pour cela?
Merci pour votre aide.
Astyanax34
-
1ère solution :
Code:
"SELECT * FROM " + tableName + " WHERE 1=0"
Adapte la clause WHERE avec une opération booléenne fausse afin de ne pas déclencher la requete ( sinon, ca risque d'être long si ta table est très fournie en données ).
Tu auras une exception si la table n'existe pas, un resultset vide si elle existe.
Autre solution :
Passe par les métadata de la base.
-
personnellement je trouve la 2eme solution beaucoup plus elegante. en effet tu n'obliges pas Java a envoyer une requete sur une table qui n'existe pas et donc a lever une exception, ce qui ne fait pas tres "propre". de plus les metadata des bases de données sont là pour ça.
je pense que ceci pourra t'aider (http://java.sun.com/j2se/1.4.2/docs/....String[])) mais je pense surtout que tu aurais pu le trouver tout seul !!! on ne le dira jamais assez, mais la doc Java (http://java.sun.com/j2se/1.4.2/docs/api/) est absolument OBLIGATOIRE pour TOUS les developpeurs Java !!!
-
Merci a tous les deux pour vos reponses.
J avais egalement pense a essyer de lever une exception, mais je m etais ravise car je ne trouvais pas ca tres propre non plus.
Quant aux meta data, il va de soit que je ne me serai pas permis de poster si je n'avais pas deja cherche auparavant. Puisque tous les 2 me reorientez dessus, je me suis dit que j avais peut etre mal cherche. J ai donc repasse une a une toutes les methodes disponibles, et je n ai toujours rien trouve qui resoudrait mon probleme (ce qui me semble assez louche quand meme, je suis sur que ca doit exister)
Ai je encore une fois mal cherche? Peut etre que mon anglais me joue des tours? Je ne sais pas.
Merci pour votre aide
Astyanax34
-
meme la methode getTables() ???? elle te renvoie pourtant un tableau avec toutes les infos sur toutes les tables de ta base (dont le nom bien sur). tu fais ensuite une recherche dans le resultSet qui t'est retourné et tu trouves ou tu trouves pas ta table.
donc reverifie bien ;-)
-
Merci beaucoup, j avais pas du tout compris comment elle marchait.
C etait donc un probleme d anglais! ;)
Heureusement que je suis en stage a Londres ;)
Allez dans quelques semaines je n aurai plus ce genre de probleme (enfin j espere parceque c est pas gagne...)
En tout cas merci beaucoup.
Astyanax34