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

Java Discussion :

Création d'une table


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 7
    Par défaut Création d'une table
    Bonjour à tous,

    j'ai une question concernant pour créer une table via java. En fait l'utilisateur peut décider via l'interface graphique de créer une table " Souris " par exemple avec des attributs qu'il aura spécifiés. Si je reçois en paramètre de ma fonction le nom de la table et un tableau. Je voudrais genre dire dans la première case je met le nom de la table reçu en paramètre mais après je vois pas comment prendre en compte les attributs qu'aura rentré l'utilisateur, comment les récupérer et le mettre dans tab[0][1] , etc . Si quelqu'un pouvez m'aider à écrire cette partie de code ça serait gentil.

    Bonne soirée

  2. #2
    Membre Expert Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Par défaut
    Salut,

    Bon déjà tu pars dans une implémentation qui me parait un peu suspect.
    - Pourquoi un tableau a 2 dimension ?
    - Pourquoi mettre le nom dans tab[0], et les attributs dans tab[0][X] ??

    Le plus simple à mon avis c'est de créer une classe Attribut pour la définition et s'en servir pour générer une requête SQL.

    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
     
    public class Attribut {
     
    	private String nom;
    	private String type;
    	private String precision;
    	private boolean isNotNull;
     
     
    	// Getter/Setter
     
    	public String toString(){
     
    		String s = nom + " " + type + " (" + precision + ")";
     
    		if( isNotNull )
    			s += "not NULL";
     
    		return s;
    	}
    }
    Tu vas alimenter cette classe en fonction de ce que tu vas récupérer de ton interface graphique et ainsi te créer un tableau d'Attribut. Après comme je sais pas quelles propriétés son éditable je te laisse compléter la classe Attribut et écrire la fonction toString().

    Ensuite tu n'as plus qu'a boucler dessus en appelant toString() pour générer ta requête.

    Ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public String generateQuery( String tableName, Attribut[] attrs ){
     
    	String query = "CREATE TABLE " + tableName + " ( ";
    	query += "id INTEGER not NULL, ";
     
    	for(i=0;i<attrs.length;i++)
    		query += attrs.toString() + ", ";
     
    	query += "PRIMARY KEY ( id ) )";
     
            return query;
    }
    Et il ne te reste plus qu'a exécuter ta requête.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Statement stmt = conn.createStatement();
     
    String query = generateQuery( tableName, attrs );
     
    stmt.executeUpdate(sql);
    Avec le try/catch ou try-with-ressouce qui va bien.

    Bon après il faut que tu adaptes cet exemple à tes besoins mais l'idée est là

    Cdt.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 7
    Par défaut
    Merci beaucoup de la réponse,

    en fait comme je suis encore novice en java, j'ai quelques questions vis à vis du code. En fait la table que la fonction dois juste créer le titre et récupérer les attributs rentrés par l'utilisateur, mais c'est uniquement les attributs globaux par exemple si je prends la classe camion,

    Classe Camion
    NATIONALITE AGE ANNEE DEXERCICE

    par exemple ou il y a un nombre indéterminé de lignes (un tableau vide)

    Comment en utilisant la classe attribut, ça va prendre en compte ce que l'utilisateur aura rentré.
    Dans le getteur il faut retourner quoi, comment savoir
    A quoi correspond le id ainsi que le primary key, et le id integer is not null je ne sais pas trop.

    Merci et désolé du nombre de questions ^^

  4. #4
    Membre Expert Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Par défaut
    Heuu juste que l'on soit d'accord avant de continuer. Tu parles bien de créer une table en base de donnée hein ?

    Parce que sinon tu peux oublier tout ce que j'ai écris avant

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 7
    Par défaut
    oui créer une table (dans une base de donnée ) mais comme je découvre mes questions peuvent paraître un peu évidentes

  6. #6
    Membre Expert Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Par défaut
    Ok ok

    Concernant le fait que tu ne connaisses pas à l'avance le nombre de champs.

    Un solution simple pourrait consister a avoir :
    - Un JTextField pour le nom de la table
    - Un JTextField pour le nom de l'attribut
    - Un JComboBox pour le type de la donnée
    - Un JButton pour ajouter le champs
    - Un JButton pour valider la création de la table

    On va oublier qu'il soit obligatoire ou non (isNotNull) pour l'instant.

    Pour ajouter un champs, l'utilisateur doit remplir le nom du champ et sélectionner le type du champ dans la combo box, puis valider l'ajout avec le bouton.
    Le clic du bouton va déclencher la création d'un objet Attribut avec les valeurs saisies, puis vider les champs. Comme ça il va pouvoir créer autant de champs qu'il le désire et valider la création de la table quand il en a envie en cliquant sur le bouton de création de table.

    Il faut bien évidemment stocker les objets Attribut dans une liste par exemple.

    Comment en utilisant la classe attribut, ça va prendre en compte ce que l'utilisateur aura rentré
    C'est toi qui remplie cette classe avec les valeurs renseignées par l'utilisateur.

    Dans le getteur il faut retourner quoi, comment savoir
    Les getter/setter on toujours la même forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public void setNom( String nom ) { this.nom = nom; }
    public void setType( String type ) { this.type = type; }
    public String getNom(){ return nom; }
    public String getType(){ return type; }
    C'est jute un moyen d'accéder à ta donnée.

    A quoi correspond le id ainsi que le primary key, et le id integer is not null je ne sais pas trop.
    Ben c'est la base du SQL
    Il te faut un identifiant unique pour chaque ligne d'une table dans une base de donnée. Le mot clé "primary key" désigne l'attribut qui servira de clé primaire lorsque tu définis la structure de ta table.

    Pour être franc, je ne sais pas si cet exercice est à ta portée pour l'instant. J'ai bien l'impression qu'il te manque des notions importantes en programmation ainsi qu'en SQL. Le fait que tu ne saches pas ce qu'est une clé primaire le démontre.

    Je te propose donc d'y aller petit à petit en commençant par l'interface graphique. Écris la classe graphique avec les champs dans un premier temps sans te soucié du reste. Une fois que tu auras fais ça, on verra comment faire pour gérer les événements des boutons et créer les Attributs.

    Et n'hésite pas à poster du code ! C'est toujours plus facile pour nous lorsque que l'on a du code

    Cdt.

    Edit : 2 tutos pour les interfaces graphique en Swing
    Tuto 1
    Tuto 2

Discussions similaires

  1. création d'une table dans une base de donnée accèss
    Par zidenne dans le forum Bases de données
    Réponses: 1
    Dernier message: 25/10/2005, 10h54
  2. Question sur la création d'une table
    Par air dans le forum Oracle
    Réponses: 4
    Dernier message: 23/10/2005, 12h46
  3. Réponses: 4
    Dernier message: 19/10/2005, 11h26
  4. Création d'une table avec foreign key
    Par lepierre dans le forum Langage SQL
    Réponses: 5
    Dernier message: 17/09/2004, 14h20
  5. INTERBASE Création d'une table
    Par Corben dans le forum InterBase
    Réponses: 2
    Dernier message: 19/06/2004, 20h55

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