Ciao, dopo alcuni giorni in cui, probabilmente per qualche strana congiunzione astrale, riuscivo a fare tutto al primo colpo, sono tornato ad arenarmi.
La situazione è questa: finestra principale con una JTexField dove inserire il cognome del cliente da cercare e un JButton che premuto effettua la ricerca. Il risultato della query viene memorizzato su un oggetto Vector < String > . Se il vettore non ha nessun elemento (e quindi in buona sostanza quel cliente non esiste), si apre una maschera vuota che permette l'inserimento dei dati e fin qui tutto regolare. Se il vettore contiene un solo elemento si dovrebbe aprire la stessa maschera con i dati di quel cliente. Per fare ciò dovrebbe passare alla classe della maschera la stringa dell'ID del cliente, ma nel tentativo di recuperare questa stringa la VM mi solleva la seguente eccezione:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: [Ljava.lang.String; cannot be cast to java.lang.String
at luna.GUI.PannelloRicerca.effettuaRicerca(PannelloR icerca.java:51)
at luna.GUI.PannelloRicerca.actionPerformed(PannelloR icerca.java:35)
at javax.swing.AbstractButton.fireActionPerformed(Abs tractButton.java:2013)
at javax.swing.AbstractButton$Handler.actionPerformed (AbstractButton.java:2336)
at javax.swing.DefaultButtonModel.fireActionPerformed (DefaultButtonModel.java:405)
at javax.swing.DefaultButtonModel.setPressed(DefaultB uttonModel.java:260)
at javax.swing.plaf.basic.BasicButtonListener.mouseRe leased(BasicButtonListener.java:254)
at java.awt.Component.processMouseEvent(Component.jav a:6100)
at javax.swing.JComponent.processMouseEvent(JComponen t.java:3288)
at java.awt.Component.processEvent(Component.java:586 5)
at java.awt.Container.processEvent(Container.java:211 0)
at java.awt.Component.dispatchEventImpl(Component.jav a:4461)
at java.awt.Container.dispatchEventImpl(Container.jav a:2168)
at java.awt.Component.dispatchEvent(Component.java:42 87)
at java.awt.LightweightDispatcher.retargetMouseEvent( Container.java:4466)
at java.awt.LightweightDispatcher.processMouseEvent(C ontainer.java:4130)
at java.awt.LightweightDispatcher.dispatchEvent(Conta iner.java:4060)
at java.awt.Container.dispatchEventImpl(Container.jav a:2154)
at java.awt.Window.dispatchEventImpl(Window.java:2555 )
at java.awt.Component.dispatchEvent(Component.java:42 87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java: 605)
at java.awt.EventDispatchThread.pumpOneEventForFilter s(EventDispatchThread.java:276)
at java.awt.EventDispatchThread.pumpEventsForFilter(E ventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForHierarch y(EventDispatchThread.java:191)
at java.awt.EventDispatchThread.pumpEvents(EventDispa tchThread.java:186)
at java.awt.EventDispatchThread.pumpEvents(EventDispa tchThread.java:178)
at java.awt.EventDispatchThread.run(EventDispatchThre ad.java:139)
Da quello che ho capito vuol dire che non può fare il cast da String a String[] e mi va bene, ma l'oggetto dovrebbe essere una stringa. Posto solo la parte di codice interessata, premettendo che: effettuaRicerca è il metodo chiamato dalla pressione del JButton e luna.Start.db è l'istanza di una classe che esegue le istruzioni sul database, gentilmente concesso da un frequentatore di questo forum http://forum.html.it/forum/showthrea...hreadid=801696
codice:
public void effettuaRicerca() {
cognome = inseriscicognomeTF.getText();
System.out.println("Sto cercando il Sign. "+cognome);
Vector<String> v = luna.Start.db.eseguiQuery("SELECT ID FROM clienti WHERE cognome='"+cognome+"' ;");
int vSize = v.size();
if (vSize == 0) {
System.out.println("Non esiste");
PannelloPrincipale.pannelloCorrente = "PannelloCliente";
PannelloPrincipale.layout.show(FinestraPrincipale.one, "" + PannelloPrincipale.pannelloCorrente);
}
if (vSize == 1) {
System.out.println("Esiste un solo record");
String value = (String)v.elementAt(0);
System.out.println(value);
//String idCliente = v.get(0);
}
}
Vi ringrazio anticipatamente per l'aiuto.
Ciao
Matteo