IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JDBC Java Discussion :

[JDBC]Tester l'existence d une table


Sujet :

JDBC Java

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 20
    Points : 16
    Points
    16
    Par défaut [JDBC]Tester l'existence d une table
    Je desire terter l ' existence d' une table avant de la creer avec le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    st.executeUpdate("DROP TABLE Tempview")
    Comment proceder ??

    PS: J interroge une base de données Access.

    Merci de bien vouloir m' aider.

    juflata



    [Modéré par Didier]
    Ajout de tag dans le titre
    Lire les règles du forum : Règles du forum Java

  2. #2
    En attente de confirmation mail

    Profil pro
    Inscrit en
    Mars 2003
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 71
    Points : 116
    Points
    116
    Par défaut
    Tu peux faire le Drop quand même, si la table n'existe pas tu auras une exception qu'il suffira que tu captures et que tu traites.
    Quoi qu'il en soit il n'y pas de SQL Access comme sous Oracle permettant de faire un select sur la table des tables... donc ma méthode serait de lancer le Drop quand même et de récupérer la SQLException de cette commande.

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    Merci bahamouth

    Comme je veux creer une table apres, faut il creer ma table dans le catch ? au cas ou la table n existe pas ?


    Merci encore une fois ?

  4. #4
    Expert éminent

    Avatar de christopheJ
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 600
    Points : 8 235
    Points
    8 235
    Par défaut
    Tu rentreras dans le catch que si une exception est levée donc c'est le bon endroit pour le faire.
    Attention toutefois car la création de la table (ordre SQL) est susceptible de lever une exception alors tu te met a imbriquer des try-catch, ce qui peut amener à confusion....
    je ferai un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    boolean tableExiste=true;
    try{
      //drop de la table
      .....
    }catch (SQLException e){
      tableExiste=false;
    }
    if (!tableExiste){
      try{
         //création table
       }catch (Exception e){
           //gestion erreur
       }
    }//if
    Tu peux affiner en controlant l'erreur renvoyée au drop (le message correspond à une table inexistante ou à une base inaccessible?)

  5. #5
    Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 58
    Points : 52
    Points
    52
    Par défaut
    Solution alternative :

    Avec la requete SQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT
      distinct table_name 
    FROM
      user_tab_columns
    Cette requete te renvois toutes les tables existante pour l'utilisteur en cours.

    --
    Bicnic.

  6. #6
    Membre émérite
    Avatar de Ioan
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 737
    Points : 2 999
    Points
    2 999
    Par défaut
    Bonjour,
    Essaye ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public static boolean existe(Connection connection, String nomTable)
    						throws SQLException{
    	boolean existe;
    	DatabaseMetaData dmd = connection.getMetaData();
    	ResultSet tables = dmd.getTables(connection.getCatalog(),null,nomTable,null);
    	existe = tables.next();
    	tables.close();
    	return existe;	
    }
    A utiliser comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Connection connection = ...;
    Statement statement = ...;
    if(existe(connection,"MaTable")){
       statement.executeUpdate("DROP TABLE MaTable");
    }
    Bonne chance.
    @+
    Les FAQs Java, J2EE, JDBC, Struts > Les cours > Le Forum Java.
    Merci de respecter les règles du club.
    Mon blog : quelques news sur Java, Linux et le monde de l'Open Source.

  7. #7
    Membre à l'essai
    Inscrit en
    Mai 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    Je vous remecie,

    ca marche

  8. #8
    Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 58
    Points : 52
    Points
    52
    Par défaut
    Je ne connaissais pas l'interface DatabaseMetaData.
    Tres pratique.

    --
    Bicnic.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/12/2005, 10h19
  2. Tester l'existence d'une table avec une requête
    Par Oluha dans le forum Access
    Réponses: 6
    Dernier message: 29/08/2005, 09h45
  3. Tester l'existence d'une table sous Access
    Par Oluha dans le forum Bases de données
    Réponses: 10
    Dernier message: 29/08/2005, 09h42
  4. tester l existance d une table
    Par mick84m dans le forum Requêtes
    Réponses: 4
    Dernier message: 25/04/2005, 11h24
  5. [ADO] Tester l'existence d'une table
    Par nd25 dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 05/09/2002, 13h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo