Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    2

    Controllo Aggiornamento Record Mysql con JAVA

    Gentili ragazzi vorrei una info, io effettuo un update su un DB java, per fare in modo che ad aggiornamento eseguito mi restituisca "il record è stato aggiornato" oppure mi generi un eccezione come posso procedere?? mi serve entro le 21 di stasera.
    Vi posto il codice da me fatto:

    codice:
    import java.sql.*;
    import java.util.Scanner;
    public class UpdateCause {
    	public static void main(String[] args){
    		Scanner console=new Scanner(System.in);	
    		int codice = 0;
    		String stato = "";
    		try {
    			Class.forName("org.gjt.mm.mysql.Driver").newInstance();
    			Connection conn = DriverManager.getConnection(url,"root","root");
    			for (SQLWarning warn = conn.getWarnings(); warn != null;warn=warn.getNextWarning()){
    				System.out.println("SQLWarning:");
    				System.out.println("State: " + warn.getSQLState());
    				System.out.println("Message: " + warn.getMessage());
    				System.out.println("Error Code: " + warn.getErrorCode());
    			}
    			Statement stmt = conn.createStatement();				
    		    System.out.println("Aggiornamento della causa:\n");
    		    System.out.println("Inserire il codice della causa: ");
    			codice = Integer.parseInt(console.nextLine());
    			System.out.println("Inserire lo stato della causa(Positivo|Negativo)");
    			stato = console.nextLine();
    			query = "UPDATE causa SET stato = '" + stato + "' WHERE codice ="+ codice;
    		    stmt.executeUpdate(query);
    			stmt.close();
    			conn.close();
    			}
    		
    		catch(SQLException se){
    			System.out.println("SQLException:");
    			
    			while (se != null){
    				System.out.println("State: " + se.getSQLState());
    				System.out.println("Message: " + se.getMessage());
    				System.out.println("Error Code: " + se.getErrorCode());
    				
    				se = se.getNextException();
    		}		
    	}
    		
    		catch(Exception e){
    			System.out.println(e);
    		}
    		
    	}
    	
    
    	static final String url = "jdbc:mysql://localhost/studio";
    	static String query;
    }
    Spero in un possibile aiuto. grazie mille

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Moderazione

    I tag CODE...
    (vedi Regolamento, punto 6)

    Li ho aggiunti io.


    PS: "mi serve entro le 21 di stasera" non sta né in cielo né in terra... ognuno risponde con modi e tempi che desidera. E' un forum, non un pool di programmatori pagati per il lavoro. Per questo genere di richieste, esiste il forum "Offro Lavoro / Collaborazione", ma anche lì non hai nessuna garanzia sui tempi.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Ad ogni modo, la documentazione del metodo "executeUpdate()" è chiara:

    codice:
    public int executeUpdate(String sql):
    Quel valore di ritorno (che tu no consideri!) indica il numero di record che sono stati affetti da modifica... è ovvio che ce l'hai solo se e quando la query ha avuto effetto.

    Se c'è un errore, viene sollevata una eccezione, che già viene da te trattata.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    2
    Originariamente inviato da LeleFT
    Ad ogni modo, la documentazione del metodo "executeUpdate()" è chiara:

    codice:
    public int executeUpdate(String sql):
    Quel valore di ritorno (che tu no consideri!) indica il numero di record che sono stati affetti da modifica... è ovvio che ce l'hai solo se e quando la query ha avuto effetto.

    Se c'è un errore, viene sollevata una eccezione, che già viene da te trattata.


    Ciao.

    Mi scuso per il fatto che ho detto per le 21 di stasera volevo dire se qualcuno riesce entro le 21 che devo mandare per email il progettino. Però anche se trovo la soluzione dopo non è un problema anche perchè effettivamente funziona....
    Riguardo al problema in pratica ho db quando provo a cambiare il paramentro del codice 1 che è contenuto del db funziona ma se metto qualsiasi codice anche non presente nel db non mi solleva nessuna eccezione... spero che sono riuscito a farmi capire... e grazie mille per la tempestività

    Mi scuso con il moderatore per il problema del codice... non riuscivo a metterlo... proprio... grazie mille. E non voglio che sia un comando questa risoluzione del problema.

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Una query UPDATE non fa batter ciglio al database se non va "a buon fine" - a meno che non avesse errori di sintassi.

    UPDATE cerca il/i record che corrispondono alla clausola in WHERE e se lo/li trova, ne fa l'UPDATE così come specificato nel corpo della query. Ma se quel WHERE non viene mai soddisfatto mica è un errore.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2016
    Messaggi
    2
    Ciao,
    scusami se arrivo solo ora, forse dopo 6 anni avrai gi� trovato soluzione, ma posto comunque una risposta nel caso qualche altro lettore in futuro si trovi nella stessa situazione.
    Come premessa ammetto che non sono un programmatore provetto di java e che mi sto facendo le ossa una riga di codice alla volta. forse ci sono soluzioni migliori di quella che sto andando ad esporre, comunque descrivo il problema simile al tuo che ho avuto e come l'ho risolto:

    La semplice funzione del mio programmino era una mascherina grafica che mi permettesse di cambiare una password per l'utente da me richiesto e presente nella tabella di un database SQL Server (io mi appoggio al db Microsoft anche per ragioni di lavoro, ma il ragionamento che far� non cambia anche se utilizzi un diverso tipo di db).

    Veniamo al problema: alla pressione del pulsante applica come facevo a sapere se la password dell'utente veniva o no cambiata in caso avessi scritto male uno o entrambi? La query di update non mi ritornava alcun errore se le condizioni dopo il where non venivano soddisfatte??
    Soluzione:nella mascherina grafica avevo gi� le informazioni che mi servivano e cio� nome utente e vecchia password, perci� ecco il barbatrucco che ho usato e che mi funziona davvero bene, seguimi nella logica..
    1-ho eseguito la connessione al db, ho inviato una prima query di select alla tabella usando utente e vecchia password, memorizzando il risultato in un result set;
    2-se nel result set risultava una riga (comando: if(rs.next() { //istruzioni }) e cio� trovava le informazioni, inviavo una seconda query di update cambiando la password all'utente, poi visualizzavo un msg di operazione riuscita;
    3-altrimenti se il result set era vuoto (comando:else { //istruzioni }) voleva dire che avevo scritto male l'utente,la vecchia password oppure entrambi vanificando la select, perci� non eseguivo l'update e visualizzavo un msg di errore.
    ***nel tuo caso controlli dopo se esiste una riga con il campo che hai cambiato***

    Elementare watson..elementare... lasciando perdere le battute questa � stata la mia vicenda che forse pu� essere utile o ampliata/riveduta per altri casi, oppure mamma Oracle ha risolto con una semplice funzione che per� io non conosco.

    Sperando di esser stato utile, saluto tutti gli entusiasti meccanici del bit 0/1..dio dacci la forza per creare le basi di un futuro ricco e divertente. Ciao.

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.