Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it L'avatar di paul78
    Registrato dal
    Apr 2010
    Messaggi
    515

    Problemi con messaggio...rimane in memoria...

    Ciao a tutti!!!

    ho creato una modifica del database ma ho un problema!!!

    nel momento in cui modifico il database faccio uscire un messaggio ma poi se dovessi chiudere la finestra per la modifica e poi riaprirla per una seconda modifica mi escono 2 messaggi!!!

    praticamente se dovessi aprire il frame della modifica e chiuderla per 10 volte...per 10 volte consecutive mi esce il messaggio!!!!

    questo è il cod:

    codice:
    salvaModificaBase.addActionListener(new ActionListener() {				
    public void actionPerformed(ActionEvent evt) {	
    String s1 = textNome.getText(); 
    String s2 = texCognome.getText();
    String s3 = textIDBase.getText();
    
    if (s1.equals("")){
    JOptionPane.showMessageDialog(null, "Inserire il nome", "Messaggio", JOptionPane.WARNING_MESSAGE);
    }else if (s2.equals("")){
    JOptionPane.showMessageDialog(null, "Inserire il cognome", 
    }else {
    try {
    Class.forName("org.sqlite.JDBC");
    }
    catch (Exception exc) {
    System.out.println("Errore - Driver jdbc non presente: "+ exc.getMessage());
    }
    				
    try {
    conn = DriverManager.getConnection("jdbc:sqlite:basi.sqlite");						
    						
    String query = "UPDATE playlist SET nome=?, cognome=? where id="+s3;
    pstmt = (PreparedStatement) conn.prepareStatement(query); 
    pstmt.setString(1, s1); 
    pstmt.setString(2, s2);
    pstmt.setString(3, s3);
    
    pstmt.executeUpdate(); 
    
    					
    // QUESTO è IL MESSAGGIO CHE RIMANE IN MEMORIA....					
    JOptionPane.showMessageDialog(null, "Lista Modificata!", "Messaggio...",JOptionPane.INFORMATION_MESSAGE );							
    					
    pstmt.close();
    conn.close();
    }
    					
    catch (Exception exc) {
    System.out.println("Errore: "+ exc.getMessage());
    } 
    					
    }
    				
    }
    			
    });
    dov'è l'errore???

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: Problemi con messaggio...rimane in memoria...

    Originariamente inviato da paul78
    nel momento in cui modifico il database faccio uscire un messaggio ma poi se dovessi chiudere la finestra per la modifica e poi riaprirla per una seconda modifica mi escono 2 messaggi!!!

    praticamente se dovessi aprire il frame della modifica e chiuderla per 10 volte...per 10 volte consecutive mi esce il messaggio!!!!
    Ho il sospetto che tu crei una nuova finestra di modifica ogni volta, senza distruggere la precedente (probabilmente la nascondi solamente...): in questo modo i listener restano attivi e vengono ancora chiamati.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it L'avatar di paul78
    Registrato dal
    Apr 2010
    Messaggi
    515
    ..e come si distruggono le finestre????

    mi è nuova....

  4. #4
    Utente di HTML.it L'avatar di paul78
    Registrato dal
    Apr 2010
    Messaggi
    515
    facendo delle ricerche ad internet ho trovato questo:

    JOptionPane.getRootFrame().dispose();

    ma non fa niente!!!! stò impazzendo!!!!

  5. #5
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da paul78
    ..e come si distruggono le finestre????

    mi è nuova....
    Come gestisci l'apertura della finestra di modifica? Posta il codice di questa parte.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  6. #6
    Utente di HTML.it L'avatar di paul78
    Registrato dal
    Apr 2010
    Messaggi
    515
    codice:
    private void ModificaNomePlaylist() {
    		textNomeBase.setText("");	
    		textIDBase.setText("");
    		textIDBase.setEnabled(false);
    		modelEdit.removeAllElements();
    		try {
    			Class.forName("org.sqlite.JDBC");
    		}
    		catch (Exception exc) {
    			System.out.println("Errore - Driver jdbc non presente: "+ exc.getMessage());
    		}
    		try {			
    			conn = DriverManager.getConnection("jdbc:sqlite:basi.sqlite");
    			//String s1 = (String) comboEdit.getSelectedItem();
    			pstmt = (PreparedStatement) conn.prepareStatement("SELECT * FROM combolist  ORDER BY combo ASC");
    			//pstmt.setString(1, s1);
    			rs = pstmt.executeQuery();
    				
    		GridBagLayout grid = new GridBagLayout();
    		GridBagConstraints constraints = new GridBagConstraints();
    		constraints.insets.bottom = 5;
    		constraints.insets.left = 5;
    		constraints.insets.right = 5;
    		constraints.insets.top = 5;
    		constraints.fill = GridBagConstraints.BOTH; 
    		
    		labelModificaBase = new JLabel("Modifica Nome della PlayList");
    		constraints.gridx = 2;
    		constraints.gridy = 0;
    		constraints.gridheight = 1;
    		constraints.gridwidth = 1;
    		constraints.weightx = constraints.weighty = 0.0;
    		grid.setConstraints(labelModificaBase, constraints);
    		
    		
    		//lista playlist
    		constraints.gridx = 0;
    		constraints.gridy = 1;
    		constraints.gridwidth = 4;
    		constraints.gridheight = 4;
    		constraints.weightx = constraints.weighty = 1.0;
    		grid.setConstraints(scrollListEdit, constraints);
    
    		constraints.gridx = 0;
    		constraints.gridy = 5;
    		constraints.gridheight = 1;
    		constraints.gridwidth = 4;
    		constraints.weightx = constraints.weighty = 0.0;
    		constraints.fill = GridBagConstraints.HORIZONTAL;
    		grid.setConstraints(buttonModificaBase, constraints);
    		
    		
    		
    		constraints.gridx = 4;
    		constraints.gridy = 1;
    		constraints.gridheight = 1;
    		constraints.gridwidth = 1;
    		constraints.weightx = constraints.weighty = 0.0;
    		grid.setConstraints(idBase, constraints);	
    		
    		constraints.gridx = 5;
    		constraints.gridy = 1;
    		constraints.gridheight = 1;
    		constraints.gridwidth = 1;
    		constraints.weightx = constraints.weighty = 0.0;
    		grid.setConstraints(textIDBase, constraints);	
    		
    		constraints.gridx = 4;
    		constraints.gridy = 2;
    		constraints.gridheight = 1;
    		constraints.gridwidth = 1;
    		constraints.weightx = constraints.weighty = 0.0;
    		grid.setConstraints(nomeBase, constraints);		
    		
    		constraints.gridx = 5;
    		constraints.gridy = 2;
    		constraints.gridheight = 1;
    		constraints.gridwidth = 1;
    		constraints.weightx = constraints.weighty = 0.0;
    		grid.setConstraints(textNomeBase, constraints);				
    			
    		constraints.gridx = 5;
    		constraints.gridy = 5;
    		constraints.gridheight = 1;
    		constraints.gridwidth = 1;
    		constraints.weightx = constraints.weighty = 0.1;
    		constraints.fill = GridBagConstraints.HORIZONTAL;
    		grid.setConstraints(salvaModificaBase, constraints);
    		
    		constraints.gridx = 6;
    		constraints.gridy = 5;
    		constraints.gridheight = 1;
    		constraints.gridwidth = 1;
    		constraints.fill = GridBagConstraints.HORIZONTAL;
    		constraints.weightx = constraints.weighty = 0.1;
    		grid.setConstraints(buttonCanc, constraints);
    		
    		JPanel p = new JPanel();
    		p.setLayout(grid);
    		
    		p.add(idBase);
    		p.add(textIDBase);
    		p.add(labelModificaBase);
    		p.add(scrollListEdit);
    		p.add(buttonModificaBase);	
    		p.add(nomeBase);
    		p.add(textNomeBase);
    		p.add(salvaModificaBase);
    		p.add(buttonCanc);
    		
    		while (rs.next()) { 			
    			modelEdit.addElement(new QueryModificaNomePlaylist(rs.getInt("id"),rs.getString("combo")));    					    
    		}
    		listEdit.setModel(modelEdit);
    		
    		buttonModificaBase.setIcon(modifica);
    		buttonModificaBase.addActionListener(new ActionListener() {				
    			public void actionPerformed(ActionEvent evt) {				
    				try {
    					Class.forName("org.sqlite.JDBC");
    				}
    				catch (Exception exc) {
    					System.out.println("Errore - Driver jdbc non presente: "+ exc.getMessage());
    				}
    				try {			
    					int[] selezione = listEdit.getSelectedIndices();
    					conn = DriverManager.getConnection("jdbc:sqlite:basi.sqlite");					
    					for (int i=0; i<selezione.length; i++) {						
    						QueryModificaNomePlaylist temp = (QueryModificaNomePlaylist)listEdit.getModel().getElementAt(selezione[i]);				
    						textNomeBase.setText(temp.nomeModString2);
    						String tempID=String.valueOf(temp.idNumMod2);
    						textIDBase.setText(tempID);
    						
    					}					
    				}				
    				catch (Exception exc) {
    					System.out.println("Errore: "+ exc.getMessage());
    				}
    			}			
    		});	
    		salvaModificaBase.setIcon(salva);
    		salvaModificaBase.addActionListener(new ActionListener() {				
    			public void actionPerformed(ActionEvent evt) {	
    				String s1 = textNomeBase.getText(); 
    				String s2= textIDBase.getText();
    				if (s1.equals("")){
    					JOptionPane.showMessageDialog(null, "Inserire il nome della playlisy", "Messaggio", JOptionPane.WARNING_MESSAGE);
    				}else {
    				try {
    					Class.forName("org.sqlite.JDBC");
    				}
    				catch (Exception exc) {
    					System.out.println("Errore - Driver jdbc non presente: "+ exc.getMessage());
    				}
    				
    				try {
    					conn = DriverManager.getConnection("jdbc:sqlite:basi.sqlite");											
    					
    					
    					String query = "UPDATE combolist SET combo=? where id="+s2;
    					pstmt = (PreparedStatement) conn.prepareStatement(query); 
    					
    					pstmt.setString(1, s1); 
    					pstmt.executeUpdate(); 
    																	
    					JOptionPane.showMessageDialog(null, "Nome delle Playlist Modificata!", "Messaggio...",JOptionPane.INFORMATION_MESSAGE );							
    					comboPrincipale.removeAllItems();
    					comboEdit.removeAllItems();
    					comboShow();
    					//textNomeBase.setText("");	
    					//textIDBase.setText("");
    					
    					
    					}
    					
    					catch (Exception exc) {
    						System.out.println("Errore: "+ exc.getMessage());
    					} 
    					
    				
    				}
    			}	
    		});
    		buttonCanc.setIcon(imgDelete2);
    		buttonCanc.addActionListener(new ActionListener() {				
    			public void actionPerformed(ActionEvent evt) {
    				textNomeBase.setText("");
    				textIDBase.setText("");
    			}
    		});
    		
    		JFrame frameModifica = new JFrame("Modifica Nome Plalist");
    		frameModifica.setLocationRelativeTo(null);    
    		frameModifica.setSize(700,600);	
    		frameModifica.getContentPane().add(p);
    		frameModifica.setLocationRelativeTo(null); 
    		frameModifica.setVisible(true);	
    		frameModifica.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    		pstmt.close();
    		conn.close();
    		}
    		catch (Exception exc) {
    			System.out.println("Errore: "+ exc.getMessage());
    		}
    	}
    questo è il cod. completo...vorrei tanto sapere dove sbaglio!!! in modo tale da non dover sbagliare +.....

  7. #7
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da paul78
    questo è il cod. completo...vorrei tanto sapere dove sbaglio!!! in modo tale da non dover sbagliare +.....
    Allora valuta l'idea di fare un vero corso di programmazione Java e di architetture software. Non vorrei sembrare scortese ma il codice che hai postato è veramente orrendo:

    - non c'è alcuna organizzazione del codice: mescoli la parte di interfaccia utente, l'interfacciamento al db, la preparazione dei dati ecc tutto nello stesso metodo, creando un'accozzaglia di codice illeggibile, incoerente e (soprattutto) poco mantenibile. Il codice che si occupa dell'interfaccia grafica non dovrebbe sapere niente di database, resultset ecc: ci sarà un oggetto apposito (ad esempio un DAO (Data Access Object)) che si occuperà di ciò. Il DAO si occuperà (faccio un esempio) di fare una query e restituirne il risultato.

    - non c'è neanche una riga di commento

    - convenzioni di nomenclatura poco rispettate

    Il mio consiglio è di rivedere completamente l'architettura della tua applicazione: non un codice monoblocco che fa tutto ma tanti piccoli blocchettini che interagiscono per fare il lavoro. Prendi un pezzo di carta, pensa a cosa deve fare la tua applicazione, pensa alle entità in gioco e inizia a progettare l'applicazione. Solo quando hai le idee chiare mettiti a scrivere codice.

    my two cents
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Originariamente inviato da Alex'87
    Allora valuta l'idea di fare un vero corso di programmazione Java e di architetture software. Non vorrei sembrare scortese ma il codice che hai postato è veramente orrendo:

    - non c'è alcuna organizzazione del codice: mescoli la parte di interfaccia utente, l'interfacciamento al db, la preparazione dei dati ecc tutto nello stesso metodo, creando un'accozzaglia di codice illeggibile, incoerente e (soprattutto) poco mantenibile. Il codice che si occupa dell'interfaccia grafica non dovrebbe sapere niente di database, resultset ecc: ci sarà un oggetto apposito (ad esempio un DAO (Data Access Object)) che si occuperà di ciò. Il DAO si occuperà (faccio un esempio) di fare una query e restituirne il risultato.

    - non c'è neanche una riga di commento

    - convenzioni di nomenclatura poco rispettate

    Il mio consiglio è di rivedere completamente l'architettura della tua applicazione: non un codice monoblocco che fa tutto ma tanti piccoli blocchettini che interagiscono per fare il lavoro. Prendi un pezzo di carta, pensa a cosa deve fare la tua applicazione, pensa alle entità in gioco e inizia a progettare l'applicazione. Solo quando hai le idee chiare mettiti a scrivere codice.

    my two cents
    questo glielo dico da mesi: programmatori non ci si improvvisa!!
    Aggiungo: un metodo ad oggetti così lungo fa pensare che non stai programmando ad oggetti.
    Gli ho anche ripetutamente detto che non si apre una connessione ogni volta che deve fare un'operazione al db perché l'apertura di una connessione (e prima il classforname) è dispendiosa.
    Capire cosa succede per noi è quasi impossibile, andando in debug forse troviamo che una variabile (che tu usi per i tuoi mestieri) è globale e rimane valorizzata al valore errato.
    Rieseguendo hai l'errore. Il debug lo devi fare tu, non noi.
    RTFM Read That F*** Manual!!!

  9. #9
    Utente di HTML.it L'avatar di paul78
    Registrato dal
    Apr 2010
    Messaggi
    515
    ma nno si nasce neanc programmatore....

    c'è un detto....

    sbagliando si impara....

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Originariamente inviato da paul78
    ma nno si nasce neanc programmatore....

    c'è un detto....

    sbagliando si impara....
    Si dice che errare è umano, ma perseverare è diabolico.

    Ora nessuno di noi è nato onniscente, ognuno di noi ha studiato e ascolta attentamente continua a studiare!
    Credi che ci si svegli al mattino e ci si inventi competenze che altri hanno acquisito con anni di studio, miglioramento,esperienza ?
    In questo sbagli: in tanti ti facciamo notare cosa non va nel tuo codice, ti abbiamo detto come migliorare, ma siamo sempre al punto zero: non sai quelli che fai e perché lo fai, non ti importa migliorare e imparare, ma scopiazzare soluzioni pronte che gli altri dobbiamo debuggare .

    Prova a vedere se ci sono variabili globali che setti e non resetti
    RTFM Read That F*** Manual!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.