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

NetBeans Java Discussion :

[NetBeans] NetBeans et Base de donnees


Sujet :

NetBeans Java

  1. #1
    ms7
    ms7 est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2005
    Messages : 114
    Points : 66
    Points
    66
    Par défaut [NetBeans] NetBeans et Base de donnees
    Salut,

    Je viens de faire quelques applications avec Netbeans...g utilise ce tuto http://www.netbeans.org/kb/articles/mysql-client.html super bien fait....Mais le probleme est qu´il ne fait qu´inserer des donnees dans une table...et j´aurais voulus savoir si vous aviez quelques tuyaux pour modifier et supprimer un enregistrement de la table...

    G essaye d´associer une methode pour un bouton Edit

    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
     
    private void EditButtonPanelActionPerformed(java.awt.event.ActionEvent evt) {
            //supposons qu´on ait une table avec 5 champs que l´on recupere
            String id_=idField.getText();
            String name_=nameField.getText();
            String description_=descriptionField.getText();
            String kin_=kinField.getText();
            String geo_=geoField.getText();
     
            String editStr="";
     
            try{
                //on effectue la requete SQL, que l´on affecte a une variable
                editStr=" UPDATE destecker SET id = 'id_', name = 'name_', description = 'description_', kin ='kin_', geo='geo_' WHERE id = 'id_'";
     
                int done=stmt.executeUpdate(editStr);
     
                commentLabel.setText("1 row edited");
     
                getContentPane().removeAll();
                initComponents();
     
            } catch(Exception e){
                commentLabel.setText("Error occurred in editing data");
                e.printStackTrace();
            }
     
        }
    et pour le bouton delete ....
    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
     
    private void RemoveButtonPanelActionPerformed(java.awt.event.ActionEvent evt) {
    //getField from DB
            String id_=idField.getText();
            String name=nameField.getText();
            String description=descriptionField.getText();
            String kin=kinField.getText();
            String geo=geoField.getText();
     
            String removeStr="";
     
            try{
     
                removeStr="delete * from destecker where (id_='id')";
     
                int done=stmt.executeUpdate(removeStr);
     
                commentLabel.setText("1 row removed");
     
                getContentPane().removeAll();
                initComponents();
     
            } catch(Exception e){
                commentLabel.setText("Error occurred in removing data");
                e.printStackTrace();
            }
     
        }
    ca compile mais je n´arrive pas a editer et supprimer un enregistrement... Merci de votre collaboration

  2. #2
    Membre habitué Avatar de Original Prankster
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 226
    Points : 192
    Points
    192
    Par défaut
    Penses-tu à faire un COMMIT pour valider physiquement tes requêtes d'UPDATE et de DELETE ?
    Ingénieur Génie Logiciel et Systèmes d'Information
    Management des Nouvelles Technologies

    Ecole Supérieure d'Ingénieurs de Luminy (ESIL), Marseille

  3. #3
    ms7
    ms7 est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2005
    Messages : 114
    Points : 66
    Points
    66
    Par défaut


    Aucune idee, je veux juste creer une petit application java qui me permette de faire un CRUD (Create, Read, Update, Delete) de donnees...



    Pour le commit, je n´en sais rien...Tu vois ce ke je veux dire?

  4. #4
    Membre habitué Avatar de Original Prankster
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 226
    Points : 192
    Points
    192
    Par défaut
    Oui, mais sur une base de données, quand tu fais une opération (CREATE, UPDATE ou DELETE), il faut la valider par un COMMIT pour effectuer les modifications physiquement.

    Idem quand tu fais des manipulations par le biais de java. Tout marche dans ton cas, mais tu ne vois pas le résultat sur ta base, si je comprends bien.

    Alors essaie donc de faire un stmt.commit(); après tes stmt.executeUpdate();
    ++
    Ingénieur Génie Logiciel et Systèmes d'Information
    Management des Nouvelles Technologies

    Ecole Supérieure d'Ingénieurs de Luminy (ESIL), Marseille

  5. #5
    ms7
    ms7 est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2005
    Messages : 114
    Points : 66
    Points
    66
    Par défaut
    G essaye de faire comme tu me la dis mais apparement la methode commit() n´est pas accessible...Bizarre puisque g importer le package java.sql.* donc elle doit y etre dedans no? et j´utilise la JDK 1.5...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ...
    int done=stmt.executeUpdate(removeStr);
    int done2=stmt.commit(done);
     
    commentLabel.setText("1 row removed");
     
                getContentPane().removeAll();
                initComponents();

  6. #6
    Membre habitué Avatar de Original Prankster
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 226
    Points : 192
    Points
    192
    Par défaut
    Bon oublie le commit, je pensais que tu travaillais sur autre chose qu'un statement. Forcément le commit ne marche pas, il n'existe pas dans la classe java.sql.Statement : http://java.sun.com/j2se/1.4.2/docs/api/java/sql/Statement.html

    En fait c'est ta requête qui est mal construite : le programme cherche un id égal à 'id_', alors que toi tu voudrais qu'il cherche un id égal à la valeur contenue dans la variable id_.

    Il faut donc concaténer dans ton string qui constitue la requête les bonnes valeurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    removeStr="delete * from destecker where (id = " + id_ + ")";
    Il faut bien évidemment que dans ta base de données l'un des champs de la table DESTECKER soit nommé ID.

    Pour mieux comprendre, affiche ta requête une fois que tu l'as créée, et compare là avec celle que tu aurais écrite à la main si tu travaillais directement sur ta base en SQL...

    Tu devrais par ailleurs vérifier la valeur de ton done, afin de connaître la valeur de retour de la méthode, voir si ta méthode agit bien sur la bonne ligne.

    Par ailleurs, je te conseille de fermer le statement après utilisation, ca ne peut être que mieux :
    Ingénieur Génie Logiciel et Systèmes d'Information
    Management des Nouvelles Technologies

    Ecole Supérieure d'Ingénieurs de Luminy (ESIL), Marseille

  7. #7
    ms7
    ms7 est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2005
    Messages : 114
    Points : 66
    Points
    66
    Par défaut

    Rien a faire, g essaye avec ta methode et il me renvoie une erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '* from destecker where (id ='')' at line 1
    Ensuite
    g essaye comme ca...
    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
     
    private void RemoveButtonPanelActionPerformed(java.awt.event.ActionEvent evt) {                                                  
    //getField from DB
            String id_=idField.getText();
            String name_=nameField.getText();
            String description_=descriptionField.getText();
            String kin_=kinField.getText();
            String geo_=geoField.getText();
     
            String removeStr="";
     
            try{
     
                removeStr="delete * from destecker where (id ='" + id_ + "'" +
                        "name='" + name_ + "'" +
                        "description='" + description_ + "'" +
                        "kin='" + kin_ + "'" +
                        "geo='" + geo_ + "')";
     
                int done=stmt.executeUpdate(removeStr);   
                commentLabel.setText("1 row removed");
     
                getContentPane().removeAll();
                initComponents();
                //stmt.close(); 
            } catch(Exception e){
                commentLabel.setText("Error occurred in removing data");
                e.printStackTrace();
            }
    marche pas non plus....il me dit qu´il y une erreur dans la requete SQL....Je ne comprends pas... :

  8. #8
    Membre habitué Avatar de Original Prankster
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 226
    Points : 192
    Points
    192
    Par défaut
    L'erreur est pourtant claire, il n'y a rien dans ton id_ !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    where (id = '')
    Ton getText() ne marche pas ou alors tu ne rentres rien dans ton idField...

    Toi il te faudrait quelque chose comme :
    parce que tu veux effacer la ligne (l'enregistrement) dont l'identifiant est 3 par exemple.

    Et vire les apostrophes, un ID est un INTEGER, pas un VARCHAR2. En SQL, les apostrophes désignent une chaîne de caractère :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    removeStr="delete * from destecker where (id = " + id_ + ")";
    Ingénieur Génie Logiciel et Systèmes d'Information
    Management des Nouvelles Technologies

    Ecole Supérieure d'Ingénieurs de Luminy (ESIL), Marseille

  9. #9
    ms7
    ms7 est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2005
    Messages : 114
    Points : 66
    Points
    66
    Par défaut
    L'erreur est pourtant claire, il n'y a rien dans ton id_ !
    Oui il y des donnees que g mis dans un tableau...mais je ne veux pas referencer la valeur....
    No je ne veux pas supprimer la ligne 3....Je voudrait supprimer la ligner que l´utilisateur selectionne....que j´appelle id_


    Je n´y comprends plus rien.........

  10. #10
    Membre habitué Avatar de Original Prankster
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 226
    Points : 192
    Points
    192
    Par défaut
    Eh, il ne faut pas te décourager.

    Ce que je comprend de ton code c'est que tu initialises toutes tes variables se terminant par "_" (id_, etc.) en faisant un getText() sur un champ (field) d'un formulaire quelconque.

    Si tes données proviennent d'un tableau, il faut affecter id_ (et les autres) autrement que par un getText(), non ?
    Je sais pas, moi si tes id sont dans un tableau tab_id[] et bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    id_ = tab_id [3]; // Le 3 était un exemple, c'est le cas ici aussi
    Si maintenant il s'agit des données qu'un utilisateur saisit au clavier, demande toi dans quel champ il les saisit ? Dans l'exemple de ton code il s'agit du champ idField, donc il faut que tu tapes ta valeur (3 ou autre) dans ce champ là.

    Il faut juste que tu comprenne bien ce que fait chaque ligne du code.

    Ensuite, une fois que ton id_ est initialisé, tu n'as plus qu'à construire ta requête par des concaténations qui vont bien.

    ++
    Ingénieur Génie Logiciel et Systèmes d'Information
    Management des Nouvelles Technologies

    Ecole Supérieure d'Ingénieurs de Luminy (ESIL), Marseille

  11. #11
    ms7
    ms7 est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2005
    Messages : 114
    Points : 66
    Points
    66
    Par défaut


    Je comprends....mais ce que je veux faire est pourtant simple...

    INSERTION OK :::J´Y ARRIVE

    MODIFICATION :::::J´EN SAIS RIEN:::

    SUPPRESSION DE DONNES:::::
    c ce kon est entrain de faire.....

    G un formulaire avec des labels...parmi lesquels idField.....en dessous un bouton pour valider l´insertion d´un enregistrement...Puis un tableau qui m´affiche tout ca...
    a cote du tableau 2 bouton (Edit et Delete)....
    Si je selectionne la ligne 2, par ex....et que je click sur Delete alors la ligne doit disparaitre....

    Je ne comprends pas pourkoi mon code ne passe pas....

  12. #12
    Membre habitué Avatar de Original Prankster
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 226
    Points : 192
    Points
    192
    Par défaut
    Citation Envoyé par ms7
    Si je selectionne la ligne 2, par ex....et que je click sur Delete alors la ligne doit disparaitre....
    Et bien voila ! id_ doit s'initialiser dans le cas de la suppression non pas avec le champ idField, mais avec le fait que tu sélectionnes une ligne dans le tableau ! Tu dois donc avoir un écouteur sur ton tableau, capable de déterminer sur quelle ligne tu as cliqué. Ainsi quand tu cliqueras sur le bouton "delete", id_ devra recevoir le numéro de la ligne et ta requête fonctionnera.

    Actuellement, le programme attend que tu ecrives "2" dans le champ idField et que tu cliques sur "delete" pour effacer la fameuse ligne 2.
    Ingénieur Génie Logiciel et Systèmes d'Information
    Management des Nouvelles Technologies

    Ecole Supérieure d'Ingénieurs de Luminy (ESIL), Marseille

  13. #13
    ms7
    ms7 est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2005
    Messages : 114
    Points : 66
    Points
    66
    Par défaut

    Ecoute, g essaye avec toi getActionListneners(); mais cela ne marche toujours....Pas

    Bon la je me demande en fait....kelle est le reelle avantage de faire tout ca en Java..alors qu´avec Dreamwever ou Frontpage tu met max 10min pour faire ca

    mais le probleme est kil faut ke je realise une application en java....donc malheureusement pas le choix....

    pour l´instant g fait ca http://www.netbeans.org/kb/articles/mysql-client.html mot pour mot et ca marche...Mainteant il ne me reste plus qu´a savoir comment modifier et supprimer un enregistrement....G tout essaye, je suis a cours d´idees...

Discussions similaires

  1. Réponses: 5
    Dernier message: 26/03/2011, 19h29
  2. erreur connection base de donnee netbeans
    Par dalidali86 dans le forum NetBeans
    Réponses: 6
    Dernier message: 13/08/2009, 12h03
  3. erreur connection netbeans base de donnees
    Par dalidali86 dans le forum NetBeans
    Réponses: 0
    Dernier message: 12/08/2009, 12h13
  4. Réponses: 1
    Dernier message: 25/11/2008, 22h02
  5. Réponses: 2
    Dernier message: 09/12/2005, 23h40

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