CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: megthebest con ben 1 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: gianpassa con ben 8 Thanks ricevuti negli ultimi sette giorni
Utente del mese: 9mm con ben 33 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 4 su 4
Discussione:

Sollevare eccezione se si inserisce una riga già presente

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Baby Droid


    Registrato dal
    Aug 2012
    Messaggi
    7

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Smile

    Sollevare eccezione se si inserisce una riga già presente

    Ciao a tutti avrei un problemino. Ho creato queste tabelle qui:

    codice:
                    String sql = "";
                    sql += "CREATE TABLE Paziente ( " +
                                    " _id INTEGER PRIMARY KEY," +
                                    " id TEXT NOT NULL UNIQUE," +
                                    " cf TEXT NOT NULL UNIQUE," +
                                    " cognome TEXT NOT NULL," +
                                    " nome TEXT NOT NULL," + 
                                    " data_nascita TEXT NOT NULL," + 
                                    " citta TEXT NOT NULL," + 
                                    " domicilio TEXT NOT NULL" +
                                    ");";
                    db.execSQL(sql);
    E poi in un file java c'è questo metodo:

    codice:
    public void writePazienteTable(){
                mioDatabaseHelper = new PazientiDataBaseHelper(this);
                SQLiteDatabase db_write = mioDatabaseHelper.getWritableDatabase();
                
                ContentValues values = new ContentValues();
                values.put("id", "paz001");
                values.put("cf", "xxxyyy");
                values.put("cognome", "XXX");
                values.put("nome", "YYY");
                values.put("data_nascita", "1990/01/09");
                values.put("citta", "Bari");
                values.put("domicilio", "via inesistente 12");
                long id = db_write.insert("Paziente", null, values);
        }
    Al primo inserimento... tutto okay.
    Ora... se io richiamo writePazienteTable() una seconda volta... funziona tutto, però il LogCat mi segnala una caterva di errori (però il programma continua a girare tranquillamente).
    Tutto è dovuto al fatto che ho reso id (e anche cf) UNIQUE, ovviamente.

    Il programma funziona, ma mi chiedevo, è possibile catturare questa eccezione?
    Mi spiego: se si cercasse di inserire un paziente già presente in tabella, lo smartphone dovrebbe visualizzare "Paziente già presente!" ^_^
    Ho già provato con un try/catch con SQLiteConstraintException ma niente.
    Sapreste aiutarmi?

  2.  
  3. #2
    Baby Droid


    Registrato dal
    Aug 2012
    Messaggi
    7

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Ah ho trovato xD leggendo meglio la documentazione ho notato che insert rilascia -1 xD

    Però così il LogCat continua a essere "sporco" di errori, non ci si può fare nulla?

  4. #3
    Androidiano


    Registrato dal
    Oct 2010
    Messaggi
    229

    Ringraziamenti
    27
    Ringraziato 77 volte in 35 Posts
    Predefinito

    normalmente, gestendo un database, hai due(tre) scelte:
    1] lasci fare i controlli di univocità (di foreign key, ecc) al db e gestisci gli eventuali errori ritornati.
    2] ti preoccupi tu di verificare i dati prima di inserirli nel db.
    3] non è un modo vero e proprio, piuttosto "mescoli" le due cose ovvero predisponi del codice per gestire eventuali eccezioni ed alcune cose invece le gestisci tu a mano.

    In pratica nel caso tuo e nel modo 2 o nel modo 3 .. prima di fare una operazione di insert, fai una select su quei due campi (ed eventualmente controlli anche che qualche campo non sia nullo visti i vari not null) ed in caso dai una segnalazione all'utente prima di tentare la insert di chiave duplicata piuttosto che di campo nullo.
    Felice possessore di un LG O1 con GingerLOL 1.5.2 e di un Mediacom Smartpad 810c con Pistoneone 4.2.1 / 5.0 Samsung Galaxy Tab 10.1 P7510 (originale per ora) Mediacom Smartpad 715i (ROM smartpao 2.1), Mediacom Smartpad 842i (ROM smartpao 2.0)
    Mini-Forum-FAQ per Mediacom Smartpad 810c

  5. #4
    Senior Droid L'avatar di frank17next


    Registrato dal
    Jan 2010
    Località
    Campobasso
    Messaggi
    739
    Smartphone
    GNexus, Galaxy Note, GT 10.1

    Ringraziamenti
    16
    Ringraziato 143 volte in 102 Posts
    Predefinito

    Perchè non usi esclusivamente il campo _id come unique (e magari auto-increment)?

    Inviato dal mio Galaxy Nexus con Tapatalk 2
    Nexus 6 - 5.0.1 Stock
    Nexus 5 - 5.0.1 Stock + Root
    Galaxy Note 3 GT-N9005 - 4.4.4 Stock + Root
    Galaxy Tab 10.1 Slim P7500 - [JB] CyanogenMod 10 4.1.2 Pershoot (Nightly 20121013)
    ------------------------------------------------------------------------
    https://sites.google.com/site/frank17next/

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy