Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Verificare aggiornamento su DB

    Salve ragazzi, ho la necessità di verificare questo.

    Devo eseguire una query da java sul DB (MySql).

    Ora per quanto riguarda l'inserimento di un nuovo record è tutto ok.

    Per l'aggiornamento mi interessa sapere se è stato effettuato un aggiornamento oppure no.

    Cioè l'utente prende il record 1 con questi campi:

    Campo1: Numero1, Campo2: lettera

    Non apporta alcuna modifica e fa aggiorna.

    Io dovrei fare una cosa del tipo:

    if(aggiornamento)
    hai modificato il record
    else
    non hai modificato.


    E' possibile verificare questo?

    Ho provato a fare miostatement.executeUpdate() che visto che mi restituisce un intero,

    if(executeUpdate() >0) allora hai modificato altrimenti no

    purtroppo anche se non esegue effettivamente alcuna modifica mi da sempre 1 come risultato

    come posso risolvere?

  2. #2
    Ciao,
    Non esiste nulla di "nativo"(jdbc) in java che ti permetta di sapere se è stata effettuata una modifica. Quello che puoi fare è effettuare una select sul db in modo da sapere se è stato modificato qualcosa esempio:
    codice:
    select *
    from myTable
    where campo1= numero1 and
          campo2='lettera'
          idTabella=<chiave della tabella>
    A questo punto controlli se ti viene restituito un risultato allora non è stata modificato alcun campo, se la select non restituisce nessun risultato allora qualche campo è stato modificato.

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    In questo modo, semplicemente, non puoi.
    Questo perchè al DBMS non interessa sapere se i dati che vi sono in questo momento nel record sono gli stessi che vi saranno dopo. Lui restituisce solamente il numero di righe "affected" (ovvero, che sono passibili di modifica). Le righe "passibili di modifica" sono tutte quelle che soddisfano le eventuali condizioni nella clausola WHERE o quelle derivanti da eventuali JOIN.

    Un esempio, per capire. Se ho questo record

    codice:
    +----+-------+---------+
    | id | Nome  | Cognome |
    +----+-------+---------+
    | 05 | Mario | Rossi   |
    +----+-------+---------+
    Ed effettuo questa update:

    codice:
    UPDATE Persona
    SET Cognome = 'Rossi'
    WHERE id = '05';
    Non sto facendo alcuna modifica (in termini di cambiamento sui dati), ma sto modificando (in termini di "affected") 1 record, perchè c'è un record che soddisfa la clausola WHERE e che quindi è passibile di modifica.

    L'unico modo che hai per verificare se vi è una modifica sui dati è controllare a mano se vi sono discordanze fra i valori PRIMA della modifica e DOPO.


    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
    Ah ho capito.

    Perchè ad esempio io utilizzavo questo meccanismo per il delete.

    In questo caso invece se cancellava qualcosa il risultato era maggiore di uno altrimento no.

    Cmq allora farò così.

    Controllerò a mano tutto.

    Grazie.

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da bircastri
    In questo caso invece se cancellava qualcosa il risultato era maggiore di uno altrimento no.
    Sempre per lo stesso motivo: solo che nel caso di una cancellazione, la modifica è per forza "reale"...


    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

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.