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 :

Formulaire Requête JAVA MySQL - Erreur signe <,>,=


Sujet :

NetBeans Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 19
    Par défaut Formulaire Requête JAVA MySQL - Erreur signe <,>,=
    Bonjour à tous,

    Je rencontre deux problèmes importants dans la conception de mon application en JAVA via le logiciel Netbeans.

    Résumé :
    Mon application permet de visualiser les caractéristiques machines sauvegardées dans une base de données MySQL suite à l’inventaire d’un parc réseau. La connexion à la base fonctionne.
    J’utilise de nombreux jButtonRadio, jComboBox et jTextField afin que l’utilisateur affiche les machines qui possèdent les caractéristiques saisies.
    Mes jButtonRadio me permettent d’activer ou non certains ComboBox et jTextfield. Par exemple, si le jButtonRadio « Mémoire » est sélectionnée, un ComboBox avec ( = , > ,<) et un jTextField (pour rentrer la quantité de mémoire) sont eux aussi activés.
    Voici le fonctionnement global.


    Premier problème :
    Lorsque j’écris ma requête SQL qui doit utiliser les résultats de ma ComboBox et jTextField pour la mémoire, je n’obtiens aucun résultat… La requête est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    recordBD = sqlBD.executeQuery(" SELECT bios.SMODEL, hardware.NAME,"
        + " networks.IPADDRESS, hardware.PROCESSORT, hardware.PROCESSORS,"
        + " hardware.MEMORY, drives.FREE "
        + "FROM bios, hardware, networks, drives "
        + "WHERE bios.HARDWARE_ID = hardware.ID "
        + "AND bios.SMODEL LIKE '"+res_model.toString()+"' "
        + "AND OSNAME like '"+res_item_system.toString()+"' "
        + "AND hardware.PROCESSORT like '"+res_processor.toString()+"' "
        + "AND hardware.MEMORY "+res_item_memory.toString()+" "+res_memory.toString()+" "
        + "GROUP BY bios.HARDWARE_ID;");
    res_item comprend =,< ou > suivant la ComboBox
    res_memory est un string comprenant un entier. (je devrais blinder mon jTextField en entier mais je ne l’ai pas encore fait).

    J’ai testé de convertir res_memory de String à int mais cela ne change rien…


    Deuxième problème :
    Ce problème est le plus compliqué et après avoir bien cherché, je n’ai trouvé aucune réponse.
    L’utilisateur peut saisir comme expliqué précédemment plusieurs paramètres comme la mémoire, maus aussi le processeur, l’OS…

    Tout ces renseignements sont enregistrés et cela fonctionnent.

    Le problème est que je souhaite adapter ma requête SQL suivant les paramètres sélectionnés…
    Par conséquent, si l’utilisateur sélectionne mémoire + processeur, j’obtiendrais une centaine reqûete. Si l’utilisateur saisi mémoire+processeur +vitesseprocesseur, j’aurai une autre requête SQL… ainsi de suite

    J’ai tenté avec des boucles mais çà se n’est pas le fonctionnement désiré…. La seule possibilité que je vois est de créer toutes les reqûetes inimaginables, mais çà serait extrêment long… j’ai plus 9 paramètres possibles…

    Si vous avez une idée pour ces deux problèmes, grand MERCIIII 


    Si dessous un extrait de mon code il manque des incollades probablement car j’ai supprimer pas mal de choses que çà soit plus clair :

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
     
    public class Search extends javax.swing.JFrame {
     
        ResultSet recordBD;
        String item_system, res_item_system=null, item_memory;
        int res_memory,res_disk,res_video;
     
        public Search() {
            initComponents();
     
            jTextField1.setText(null);
            jTextField2.setEditable(false);
            jComboBox1.setEnabled(false);
            jComboBox3.setEnabled(false);
        }
     
        private void jRadioButton2ItemStateChanged(java.awt.event.ItemEvent evt) {                                               
            if (jRadioButton2.isSelected()==false) jComboBox1.setEnabled(false);
            else jComboBox1.setEnabled(true);
        } 
     
        private void jRadioButton4ItemStateChanged(java.awt.event.ItemEvent evt) {                                               
            if (jRadioButton4.isSelected()==false) {
                jComboBox3.setEnabled(false);   jTextField3.setText(null);
                jTextField3.setEditable(false); jLabel8.setEnabled(false);
            }
            else {
                jComboBox3.setEnabled(true);    jTextField3.setText(null);
                jTextField3.setEditable(true);  jLabel8.setEnabled(true);
            }
        }                                              
     
        private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
     
        String model = jTextField1.getText();
        res_model = "%" + model + "%";
        String S;
        int computer_number = 0;
        boolean b = true;
        DefaultListModel Liste = new DefaultListModel();
     
        if (res_model.isEmpty()==true) {
            Warning empty_field_warning;
            empty_field_warning = new Warning(this,true);
            empty_field_warning.Empty_Field_Warning("Algunos campos "
                + "son vacios. Todos los\r\ncampos con un asterisco "
                + "son obligatorios.");
            empty_field_warning.setVisible(true);
        }
        else {
            try {
     
        recordBD = Connect.sqlBD.executeQuery(" SELECT bios.SMODEL, hardware.NAME,"
        + " networks.IPADDRESS, hardware.PROCESSORT, hardware.PROCESSORS,"
        + " hardware.MEMORY, drives.FREE "
        + "FROM bios, hardware, networks, drives "
        + "WHERE bios.HARDWARE_ID = hardware.ID "
        + "AND bios.SMODEL LIKE '"+res_model.toString()+"' "
        + "GROUP BY bios.HARDWARE_ID;");
     
                if (jRadioButton2.isSelected() == true) {
                    item_system = jComboBox1.getSelectedItem().toString();
                    res_item_system = "%" + item_system + "%";
        recordBD = Connect.sqlBD.executeQuery(" SELECT bios.SMODEL, hardware.NAME,"
        + " networks.IPADDRESS, hardware.PROCESSORT, hardware.PROCESSORS,"
        + " hardware.MEMORY, drives.FREE "
        + "FROM bios, hardware, networks, drives "
        + "WHERE bios.HARDWARE_ID = hardware.ID "
        + "AND bios.SMODEL LIKE '"+res_model.toString()+"' "
        + "AND OSNAME like '"+res_item_system.toString()+"' "
        + "GROUP BY bios.HARDWARE_ID;");
                }
                else {
                    if (jRadioButton3.isSelected() == true) {
                        String processor = jTextField2.getText();
                        res_processor = "%" + processor + "%";
        recordBD = Connect.sqlBD.executeQuery(" SELECT bios.SMODEL, hardware.NAME,"
        + " networks.IPADDRESS, hardware.PROCESSORT, hardware.PROCESSORS,"
        + " hardware.MEMORY, drives.FREE "
        + "FROM bios, hardware, networks, drives "
        + "WHERE bios.HARDWARE_ID = hardware.ID "
        + "AND bios.SMODEL LIKE '"+res_model.toString()+"' "
        + "AND OSNAME like '"+res_item_system.toString()+"' "
        + "AND hardware.PROCESSORT like '"+res_processor.toString()+"' "
        + "GROUP BY bios.HARDWARE_ID;");
                    }
                    else {
                        if (jRadioButton4.isSelected() == true) {
                            item_memory = jComboBox3.getSelectedItem().toString();
                            String memory = jTextField3.getText();
                            res_memory = Integer.parseInt(memory);
                            System.out.println(res_memory);
        recordBD = Connect.sqlBD.executeQuery(" SELECT bios.SMODEL, hardware.NAME,"
        + " networks.IPADDRESS, hardware.PROCESSORT, hardware.PROCESSORS,"
        + " hardware.MEMORY, drives.FREE "
        + "FROM bios, hardware, networks, drives "
        + "WHERE bios.HARDWARE_ID = hardware.ID "
        + "AND bios.SMODEL LIKE '"+res_model.toString()+"' "
        + "AND OSNAME like '"+res_item_system.toString()+"' "
        + "AND hardware.PROCESSORT like '"+res_processor.toString()+"' "
        + "AND hardware.MEMORY < "+res_memory+" "
        + "GROUP BY bios.HARDWARE_ID;");
     
     
    …. }}}}
    .

  2. #2
    Membre averti
    Inscrit en
    Juillet 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 19
    Par défaut
    Personne n'a une petite idée à mes problèmes

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 476
    Par défaut
    Salut,

    Pour ton 1er prob, vu qu'on ne sait pas quels sont les liens entre les tables et quelles données tu as en base, je vois pas ce qu'on peut faire

    Perso, dans ce genre de cas, la solution la plus simple est d'effectuer la même requête sur un client sql et de voir si t'as qqch ou pas.
    Pas très dur : Chope la String de ta requête avec un System.out.println et utilise la dans ton client.
    Puis, travaille ta requête sur ton client sql jusqu'à avoir le résultat escompté.
    Tu gagneras du temps.
    Remarque : j'ai l'impression qu'il manque des jointures dans ta requête : networks et drives sont cités dans le select et le form mais pas de jointure.

    Pour ton second problème,tu peux créer ta requête dynamiquement dans une boucle.
    Tu as peut-être oublié qqch durant sa création.
    Montre nous le code si tu veux.
    Remarque : si les tables sélectionnées changent selon les arguments, il faut séparer la création de la clause from et la création des jointures du reste.
    Ds ts les cas faire attention à la génération des mots clef WHERE (utilisée au début) et AND (utilisée par la suite) et aux virgules.

Discussions similaires

  1. erreur java mysql
    Par baldebaran dans le forum JDBC
    Réponses: 2
    Dernier message: 15/12/2008, 18h18
  2. Erreur requête sous MySQL 3
    Par ketek dans le forum Requêtes
    Réponses: 5
    Dernier message: 18/01/2007, 05h11
  3. [MySQL] erreur avec sous-requête
    Par Piou2fois dans le forum Langage SQL
    Réponses: 4
    Dernier message: 04/02/2006, 13h44
  4. [MySQL] Erreur SQL 1064 : Requête imbriquée avec jointure !
    Par patchankito dans le forum Langage SQL
    Réponses: 5
    Dernier message: 31/01/2006, 10h37
  5. [PHP MySQL] Erreur execution requête de type INSERT
    Par Pfeffer dans le forum Requêtes
    Réponses: 6
    Dernier message: 23/01/2006, 17h38

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