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 :

Création de tables avec postgresql


Sujet :

JDBC Java

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 38
    Points : 19
    Points
    19
    Par défaut Création de tables avec postgresql
    Bonjour!
    J'aimerais avoir un code de création de tables avec postgresql.
    j'ai essayé le code suivant après le code de connexion à ma base:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     try{
    class.forName("org.postgresql.Driver")
    conn=DriverManager.getConnection("jdbc:postgresql://...)
    Statement stmt=conn.createStatement();
    String SQL="CREATE TABLE Agent(real Agt_Code, char Agt_Nom_Pren)";
    String SQL="CREATE TABLE Agence(real Ag_Code, char Ag_Nom)";
    stmt.executeUpdate(SQL);
    }
    catch(Exception ex){...}
    J'ai un message d'erreur (''duplicate line...).je sais que c'est au niveau du .String SQL.Que dois je faire?

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 56
    Points : 59
    Points
    59
    Par défaut
    Le problème vient du fait que tu déclares deux fois de suite la même String.
    On ne peut, dans une même boucle ou un même try-catch déclarer qu'une fois une variable.

    Mais même si tu avais bien pensé à retirer le deuxième String, le second problème est que tu réaffecte une nouvelle chaine de caractère à SQL, et donc que tu écrases la première. Il faut donc que tu utilises deux variables, ou que tu concatènes tes deux chaines à l'aide d'un "+", ce qui donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    try{
    class.forName("org.postgresql.Driver")
    conn=DriverManager.getConnection("jdbc:postgresql://...)
    Statement stmt=conn.createStatement();
    String requete1="CREATE TABLE Agent(real Agt_Code, char Agt_Nom_Pren)";
    String requete2="CREATE TABLE Agence(real Ag_Code, char Ag_Nom)";
    stmt.executeUpdate(requete1);
    stmt.executeUpdate(requete2);
    }
    catch(Exception ex){...}
    ou bien : (mais je suis moins sûr, du fait du saut de ligne entre les deux requêtes) (attention aux ";" et à l'espace avant le deuxième "CREATE"):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    try{
    class.forName("org.postgresql.Driver")
    conn=DriverManager.getConnection("jdbc:postgresql://...)
    Statement stmt=conn.createStatement();
    String SQL="CREATE TABLE Agent(real Agt_Code, char Agt_Nom_Pren);" + " CREATE TABLE Agence(real Ag_Code, char Ag_Nom);";
    stmt.executeUpdate(SQL);
    }
    catch(Exception ex){...}
    Voilà, bon courage !

    ToCToF

  3. #3
    Membre à l'essai
    Inscrit en
    Août 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 38
    Points : 19
    Points
    19
    Par défaut création des tables avec postgresql
    Merci, je vais faire comme ça.
    Vous êtes sympa!

  4. #4
    Membre à l'essai
    Inscrit en
    Août 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 38
    Points : 19
    Points
    19
    Par défaut Création de tables avec postgresql
    J'ai fait comme dans le code que vous avez donnez.Il n' y avait plus d'erreur, mais je ne voyais pas mes tables dans ma base de donnée.J'ai ajouté les COMMIT, puis aussi, il y avait problème de syntaxe, j'ai corrigé et j'ai ceci:
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    try {
      Class.forName("org.postgresql.Driver");
      conn = DriverManager.getConnection("jdbc:postgresql://192.168.0.200:5432/moteur",
                                        "resina", "da");
       conn.setAutoCommit(false);
       Statement stmt = conn.createStatement();
       conn.commit() ;
     
       //stmt.executeUpdate(" CREATE TABLE Agent( Agt_Code real PRIMARY KEY ,Agt_Nom_Pren varchar(40) )");
     
       //stmt.executeUpdate("CREATE TABLE Agence( Ag_Code real PRIMARY KEY, Ag_Nom varchar(10) )");
      conn.commit;
     
     
         stmt.executeUpdate("CREATE TABLE sinistre(Sin_ref real PRIMARY KEY , Sin_Type varchar(15))");
    conn.commit;
     
     
     
       //stmt.executeUpdate("CREATE TABLE Peut avoir(Dte date)");
         //conn.commit() ;
       //stmt.executeUpdate("CREATE TABLE Assuré( As_Num_id real, As_Nom varchar(10), As_Pren varchar(30), As_dat_Nais date, As_Lieu_Nais varchar,  As_prof varchar(15),  As_Adr varchar(20),  As_Tel real(8),  as_Natio varchar(12)) )");
       //conn.commit() ;
       //stmt.executeUpdate("CREATE TABLE Cotise( Cot_Ref real, dat date,  Cot_Mtt money) )" );
       //stmt.executeUpdate("CREATE TABLE Contractant( Ctr_Nom_Pren varchar(40),  Ctr_RaisonSle varchar(15),  Ctr_Prof varchar(15),  Ctr_Adr varchar(20), Ctr_Tel real) )");
       //stmt.executeUpdate("CREATE TABLE Reclamation( Rcl_Ref real,  Rcl_Nat varchar(12), Rcl_Lib varchar(10)) )");
       //stmt.executeUpdate("CREATE TABLE Contrat( Ctrat_Num_Po real,  Ctrat_Dte_Ef date,  Ctrat_Type varchar(10)) )");
       //stmt.executeUpdate("CREATE TABLE Contracter( Ctr_Nom_Pren varchar(40),  Ctrat_Num_Po real,  Ctrat_Dur_P real,  Ctrat_Dte_Ech date) )");
       //stmt.executeUpdate("CREATE TABLE Mode règlement( Rgl_Mod_P varchar(10),  rgl_Frc_Prim) varchar(10) )");
       //stmt.executeUpdate("CREATE TABLE Rachat( Rach_Ref real,  Rach_Motif varchar(15)) )");
       //stmt.executeUpdate("CREATE TABLE Banque( Banq_Code varchar(4),  Banq_Nom varchar(5)) )");
       //stmt.executeUpdate("CREATE TABLE Demander( Dat_Depot date,  Delai_Remb date,  Rd_Vous date) )");
     
     
    }
     
    catch (ClassNotFoundException  ex){
    System.out.println("exception:"+ex.getMessage());
    ex.printStackTrace();
    }
    j'ai mis les autres en commentaire pour voir ce qui ne vas pas.
    Lorsque je consulte ma base, les tables "Agent" et "Agence" y sont mais je vois pas la table "sinistre".Avant de créer cette table , j'ai mis en commentaire les deux autres tables.Dans mon code source, chaque création d'une table est sur une seule ligne,il n'y a donc pas de problème avec les commentaires.
    Je ne sais plus ce qui ne vas pas.
    Vous pouvez m'aider?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 56
    Points : 59
    Points
    59
    Par défaut
    Posté le: Jeu Sep 22, 2005 23:07
    Pas bien dormi à ce que je vois !...

    Des problèmes avec les commit reviennent fréquemment sur les forums. Mais avant d'aller voir plus loin dans l'enchainement des con.commit(), je voudrais être sûr que ton code est un copier-coller du code que tu exécutes. Parceque si c'est le cas, tu as oublié les parenthèses après commit, ce qui pourrait expliquer cette erreur... conn.commit()

    Et ferme ta connection avant l'accolade du catch , c'est plus propre.

    Et puis également veille à changer le nom de 2 tables qui contiennentt un espace, parceque je ne suis pas sûr que postgresql soit très content... préfère mode_reglement à "Mode règlement" et peut_avoir à "Peut avoir". Et un dernier conseil puisque c'est le dernier jour de la semaine et que je me sens heureux : ne mets pas de majuscule, ni d'accent, ni d'espace aux noms de tes tables.

    Mais pour tirer partie de postgresql au maximum, tu devrais faire tes créations de table dans une procédure stockée, que tu appelles avec ton code java. Ca allège considérablement le code java (juste un appelle à la procédure, donc pas de pb de commit()), et c'est peut-être plus pro !

    Voilà, tiens nous au courant !

    ToCToF

  6. #6
    Membre à l'essai
    Inscrit en
    Août 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 38
    Points : 19
    Points
    19
    Par défaut Création de tables avec postgresql
    Bonsoir!
    Je n'ai vraiment pas bien dormi.
    Le code est effectivement un copier-coller de mon code à exécuter.Je n'ai pas fait attention à la parenthèse du commit.
    Je préfère bien les procédures stockées, je vais faire comme ça et je vous en tiendrez au courant.
    Merci encore!

  7. #7
    Membre à l'essai
    Inscrit en
    Août 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 38
    Points : 19
    Points
    19
    Par défaut Creéation de tables avec postgresql
    salut!
    J'ai tellement bien dormi, je ne vous dit pas.
    J'ai pu créer toutes mes tables sans me casser la tête avec les commit, ça me fait en tout 15 tables .
    J'ai pratiquement repris mon code en faisant très attention aux conseils que vous m'avez donnés.
    ce qui manquait je crois, je devrais enregistrer puis exécuter après chaque création de table.
    Merci encore pour tout.
    à très bientôt pour d'autres soucis.

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

Discussions similaires

  1. Création de table avec hibernate
    Par sly3333 dans le forum Hibernate
    Réponses: 4
    Dernier message: 02/12/2007, 11h53
  2. Création des tables avec les jointures.
    Par alexandrebergercyr dans le forum Langage SQL
    Réponses: 6
    Dernier message: 06/03/2007, 15h25
  3. Création de table avec Null par defaut
    Par MaitrePylos dans le forum PostgreSQL
    Réponses: 9
    Dernier message: 15/02/2006, 09h20
  4. Création de table avec index
    Par Seb7 dans le forum Requêtes
    Réponses: 2
    Dernier message: 10/04/2003, 16h11

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