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;");
 
 
…. }}}}
.