Ciao,
è da poco che mi diletto in java.
Sto vedendo questo codice ... ma diverse parti mi sono oscure..
codice:/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package netsend; /** * * @author fabio */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; import java.util.*; public class NetSend extends JFrame implements ActionListener { JComboBox list = new JComboBox(); JTextField message = new JTextField(20); JButton send = new JButton("Send"); JTextField result = new JTextField(25); private static Connection cn = null; private static Statement st= null; private ResultSet r= null; public NetSend(String title){ setTitle(title); initialise(); Container c = getContentPane(); c.setLayout(new FlowLayout(FlowLayout.CENTER)); c.add(list); c.add(message); send.addActionListener(this); send.setMnemonic(KeyEvent.VK_S); c.add(send); result.setEditable(false); result.setBackground(Color.yellow); result.setForeground(Color.red); c.add(result); } public void actionPerformed(ActionEvent ae){ if(ae.getSource()==send){ String dest = String.valueOf(list.getSelectedItem()); String msg = message.getText(); try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); cn = DriverManager.getConnection("jdbc:odbc:clients","fabio","fab"); st=cn.createStatement(); ResultSet r=st.executeQuery("xp_cmdshell 'net send "+dest+" "+msg+"'"); result.setText("Message Sent"); }catch(Exception e){result.setText("Error in Sending Message");} } } public void initialise(){ try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); cn = DriverManager.getConnection("jdbc:odbc:clients","fabio","fab"); st=cn.createStatement(); r=st.executeQuery("xp_cmdshell 'net view'"); String temp = new String(); int i = 1; ArrayList machNames = new ArrayList(); while(r.next()) { machNames.add(r.getString("output")); } for(int x=3;x<machNames.size()-3;x++){ temp = String.valueOf(machNames.get(x)); list.addItem(temp.substring(2,temp.length())); } result.setText("Type your message and press ALT and S"); } catch(Exception e){result.setText("Not able to retrieve the hosts");} } }
1. Ho capito che "public NetSend" si occupa di costruire la finestra...
2. Posso intendere che "send.addActionListener(this);" è la chiamata a "public void actionPerformed(ActionEvent ae)" ??
3. Comprendo che le istruzioni
servono per caricare, aprire e avviare il collegamento al database.codice:Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); cn = DriverManager.getConnection("jdbc:odbc:clients","fabio","fab"); st=cn.createStatement();
MA
4. Ho il buio totale su quello che succede qua:
"ResultSet r=st.executeQuery("xp_cmdshell 'net send "+dest+" "+msg+"'");"
Io mi aspetto una Query, come dice il nome... una query sul database..
Invece si tratta dell'esecuzione di un codice CMD di windows... che è corretto si faccia... ma che non capisco nella fattezza di quella istruzione..
POI
5. Ho il buio totale su quel che è la funzione "public void initialise()".
Comprendo che DEVE esserci una funzione che si occupi di caricare i dati sul combobox.. ma non vedo la chiamata da nessuna parte.. e perchè poi si chiama "initialise()" e non "initialiZe()" ? è solo un fatto di sintassi... o si tratta di una parola chiave di java?
6. Anche qui io mi aspetto l'esecuzione di una query... dopo le istruzioni:
perchè "r=st.executeQuery("xp_cmdshell 'net view'");" non contiene un istruzione della forma "SELECT * etcetc..." e mette i dati dentro sul combobox??codice:Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); cn = DriverManager.getConnection("jdbc:odbc:clients","fabio","fab"); st=cn.createStatement();
Un aiutino per comprendere questi buchi neri....![]()

Rispondi quotando


