Bonjour a tous,
Cela fait 1 semaine que je cherche a faire la chose suivante sans succes
Alors voila je m'explique :
j ai une interface client sous eclipse et un serveur sur lequel j ai installe sql serveur comme sgbd.
A l'heure actuelle c'est le client qui interroge le serveur et affiche le resultat des requetes dans des jtables.Mon directeur de projet m'a demande d inverser ce systeme et faire que ce soit le serveur aui envois le resultat des requetes au client donc alimenter mes jtables a partir du serveur.
jai donc commencer a le faire en udp avec les sockets .Mon probleme est le suivant comment envoyer le resultat d'une requete sql dans une trame udp et faire que cette requete alimente directement le jtable sur le client.
voici pour l'instant un extrait de code du client qui interroge le serveur et ou les jtables sont alimentees :
c 'est ici que je voudrais recuperer le message du serveur et alimenter ma jtable
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 private JTable getJTableCMS() { Timer minuteur = new Timer(); /* Timer minuteur = new Timer(); TimerTask refresh_data = new TimerTask() { public void run() { } }; minuteur.schedule(refresh_data, 0, 100);*/ if (jTableCMS == null) { jTableCMS = new JTable(); jTableCMS.setBounds(new Rectangle(215, 145, 938, 145)); jTableCMS.setFont(new Font("GE Inspira", Font.BOLD | Font.ITALIC, 24)); jTableCMS.setForeground(new Color(51, 0, 204)); jTableCMS.setAutoResizeMode(JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS); jTableCMS.setGridColor(new Color(122, 138, 153)); jTableCMS.setIntercellSpacing(new Dimension(1, 1)); jTableCMS.setRowHeight(80); jTableCMS.setRowSelectionAllowed(false); jTableCMS.setSelectionBackground(new Color(184, 207, 229)); jTableCMS.setSelectionForeground(new Color(238, 238, 238)); jTableCMS.setShowGrid(false); jTableCMS.setShowHorizontalLines(false); jTableCMS.setShowVerticalLines(false); jTableCMS.setBackground(Color.white); TimerTask refresh_data = new TimerTask() { public void run() { dataBase = new JDBCAdapter( pilote, host, login, pw); dataBase.executeQuery(requete_CMS);
et faire un truc du style
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 try{ byte[] buffer = new byte[1024]; String ch; DatagramPacket p = new DatagramPacket(buffer, buffer.length); DatagramSocket s = new DatagramSocket(4321); while(true) { s.receive(p); ch = new String(buffer, 0, 0, p.getLength()); majtable.setText(ch); jTableCMS.setModel(dataBase); jTableCMS.updateUI(); } }; minuteur.schedule(refresh_data, 0, 1500); } return jTableCMS; }
Merci.
Bonne fin de dimanche a tous.
Partager