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 :

test d'existence d'une table dans une bd mysql


Sujet :

JDBC Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 4
    Par défaut test d'existence d'une table dans une bd mysql
    Une fois les importations et déclarations de classe éffectuées j'ai saisie le code suivant afin de me connecter a une bd mysql:

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    public static void main(String[] args) {
            Connection  conn = null;
     
          try {
              Class.forName("com.mysql.jdbc.Driver");
          }
          catch (ClassNotFoundException e) {
              e.printStackTrace();
          }
          try {
              String url = "jdbc:mysql://localhost/nouveau";
              String user = "root";
              String psw = "";
               conn = DriverManager.getConnection(url,user, psw);
               Statement stm = conn.createStatement();
               String myQuery = "create Table programmeur( nom varchar(50), jour varchar(3),nbtasse integer)";
               //stm.executeUpdate(myQuery);
               String myQuery2 = "insert into programmeur values ('Gilbert','Mon',1),('Waly','Mon',2)";
               stm.executeUpdate(myQuery2);
     
     
          }
          catch (SQLException e){
              e.printStackTrace();
     
          }
    Rien de bien grave à l'exécution juste un message me signalant que la table "programmeur" existe déja.

    comment éviter cela sans pour autant supprimer la table "programmeur"
    et la recréer a chaque fois que je souhaite exécuter ce code?

  2. #2
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    Il faut dissocier tes deux traitements, surtout isoler le "create table", c'est lui qui te met le message si la table existe déjà.
    Ayant déjà été confronté à ça, j'avais mis cet ordre dans un traitement séparé qui ne faisait rien à la levée de la SQLException. Ceci n'est qu'un exemple de faire, il existe peut-être une méthode plus propre.

  3. #3
    Membre chevronné Avatar de gronono
    Inscrit en
    Novembre 2003
    Messages
    457
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2003
    Messages : 457
    Par défaut
    Sinon tu peux dans un premier temps récupérer les noms des tables de ta base (cf FAQ Comment récupérer les noms des tables d'une base de données ?).

    Puis vérifier si la table est dans la liste.
    Si elle ne l'est pas, alors tu la créée.
    Sinon tu fais rien.

    Puis tu fais ton Insert.

    A+

  4. #4
    Membre Expert
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Par défaut
    Detect if a table exists

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Connection c = ...
    DatabaseMetaData dbm = c.getMetaData();
    // check if "employee" table is there
    ResultSet tables = dbm.getTables(null, null, "employee", null);
    if (rs.next()) {
      // Table exists
    }
    else {
      // Table does not exist
    }
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  5. #5
    Membre éprouvé Avatar de White Rabbit
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 122
    Par défaut
    Pourquoi veux-tu créer à chaque fois la table programmeur ?

  6. #6
    Membre chevronné Avatar de Scorpyosis
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2004
    Messages : 365
    Par défaut
    Citation Envoyé par White Rabbit
    Pourquoi veux-tu créer à chaque fois la table programmeur ?
    A moins que ça soit dans un cycle de test, ou chaque fois tu effaces la base, puis tu rentres un jeu de tests, j'ai la même interrogation que White Rabbit, quelles est l'utilité d'un base de données, si c'est pour supprimer toutes les données enregistrées a chaque démarrage de l'appli ????

    [EDIT]
    Et penses à la balise code, c'est plus sympa à regarder
    [/EDIT]

Discussions similaires

  1. copier une table d'une BDD dans une table d'une autre BDD
    Par faniette dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/05/2013, 10h17
  2. Réponses: 7
    Dernier message: 25/03/2011, 10h52
  3. [AC-2003] insert des données d'une table dans une table d'une base externe
    Par marieo dans le forum VBA Access
    Réponses: 1
    Dernier message: 30/11/2009, 14h29
  4. Réponses: 2
    Dernier message: 02/06/2006, 11h26
  5. Mettre une valeur d'une table dans une variable
    Par Raphou96 dans le forum Access
    Réponses: 5
    Dernier message: 06/02/2006, 15h19

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