Visualizzazione stampabile
-
codice log-in
Salve ragazzi!
Vorrei fare un semplice login alla mia applicazione. C'è solo il nome utente senza password.
Non riesco a capire se sia meglio gestire la cosa su file, oppure con database!?
Allora su file, ogni volta che si registra un nuovo utente, devo verificare che il nome non esista già. e poi inserire ogni nome, magari in una riga diversa, per facilitarmi la lettura su file.
Mentre col database come funzionerebbe? cioè come dovrei verificare se un nome esiste già?
Non credo che lo faccio in modo automatico, il metodo insert().
-
Quote:
Originariamente inviato da
allmystery
Salve ragazzi!
Vorrei fare un semplice login alla mia applicazione. C'è solo il nome utente senza password.
Non riesco a capire se sia meglio gestire la cosa su file, oppure con database!?
Allora su file, ogni volta che si registra un nuovo utente, devo verificare che il nome non esista già. e poi inserire ogni nome, magari in una riga diversa, per facilitarmi la lettura su file.
Mentre col database come funzionerebbe? cioè come dovrei verificare se un nome esiste già?
Non credo che lo faccio in modo automatico, il metodo insert().
Dipende dal tipo di applicazione e quello che vuoi farci... secondo me scrivere su file, su android, è sempre piuttosto scomodo rispetto a fare una cosa su DB, quindi secondo me ti dovresti comunque orientare su DB (tanto parliamo sempre di SQLIte, che sono sempre oggetti leggeri e semplici).
In ogni caso devi controllare SEMPRE TU che le cose vadano a buon fine, stai scherzando? Ti vuoi fidare DELLE MACCHINE?
-
ma no! che non mi fido! volevo dire, che non credo che già all'interno della logica di insert del database di android, ci sia il controllo di 2 righi con uguale contenuto! dovrei sempre farlo io! ma nn saprei come farlo con database! cioè dovrei sempre caricare tutto il contenuto(che saranno poche righe) del database e fare il confronto con la stringa nuova da inserire...
se è uguale allora non inserisco, altrimenti ok!
E' più o meno questo che dovrei fare? o c'è qualche metodo che già lo fà!?
-
Quote:
Originariamente inviato da
allmystery
ma no! che non mi fido! volevo dire, che non credo che già all'interno della logica di insert del database di android, ci sia il controllo di 2 righi con uguale contenuto! dovrei sempre farlo io! ma nn saprei come farlo con database! cioè dovrei sempre caricare tutto il contenuto(che saranno poche righe) del database e fare il confronto con la stringa nuova da inserire...
se è uguale allora non inserisco, altrimenti ok!
E' più o meno questo che dovrei fare? o c'è qualche metodo che già lo fà!?
Se metti sul campo nome uno unique constraint nel momento in cui cercherai di fare la insert riceverai errore dal database. A quel punto si tratta di gestire l'errore per riportare all'utente il motivo corretto della fallita creazione (ancor più se il campo nome è chiave primaria... ma di solito è sconsigliato procedere così).
Se non vuoi muoverti in questo modo puoi semplicemente, prima dell'insert, fare una query col nome che si desidera inserire e vedere se ritorna righe. In caso contrario fai l'insert (ovviamente il constraint unique è consigliato comunque...).
-
Fantastico! allora procedo! grazie mille!
-
ormai son 2 giorni che ci sbatto questa testa che mi ritrovo.:(
Allora il mio obbiettivo è capire come si creano le tabelle. Dato che si tratta di sqlite ho studiato sqlite!!!! tra cui anche su SQLite Query Language: CREATE TABLE senza nessun risultato significativo, dato che io per capire devo guardare il codice!!!!!!!
il mio obbiettivo adesso è fare semplicemente un database con una colonna string che non accetta valori nulli e duplicati, quindi dovrebbe essere semplicemente una primary key. Ho fatto varie prove anche con UNIQUE. come si può vedere dai vari commenti che comunque ho lasciato nel codice.
Comunque son arrivato a
io clicco su "accedi" e inserisco il nome utente nel database (lo sò è un login stupido, ma lo vorrei fare)
se io inserisco lo stesso nome per più volte non mi dà eccezione. anzi mi ristampa tutto il contenuto del database più il nuovo nome inserito.
Grazie a chi saprà illuminarmi!!! ps: sul sito android developer sezione database non c'è gran che!o_O
-
almeno mi potreste fare delgi esempi sulla sintassi da utilizzare? non c'ho trovato gran che in giro.
Ad esempio:
si deve far sempre così: nome_campo + " regola,"
cioè qualche esempio (tratto da quelli precedenti):
-
Ma hai provato a fare una insert direttamente via sqlite?
-
cioè così:
allora inizialmente a me interessa solo il primo put. name è una striga che prendo da edittext. questo put da solo funziona. Quando ho messo anche il secondo put, il primo non me lo fà più. mi fà solo il secondo.
Poi ho notato che con android 1.5 funziona... cioè più ce altro non ho errori.
Con android 2.2 non parte proprio, ma non ho errori nel logcat!!!!!!!
la create table è:
-
ok, ho rifatto la tabella, c'erano problemi vari di variabili.
ok, adesso và! Tornando al problema principale, ovvero quello di ottenere un login con solo nome utente.
Ho deciso di gestire l'eccezzione generato dall'inserimento di un nome già esistente in tabella. sinceramente mi aspettavo un force close, invece l'eccezione appare nel logcat senza forzare la chiusura del programma.
l'eccezione è di tipo SQLiteConstraintException. ora lo devo gestire per far apparire il messaggio di login errato. e ho fatto così:
ma l'errore non viene stampato a video.... la causa potrebbe essere che ciò è in un blocco catch?
Grazie in anticipo a chi saprà aiutarmi!
-
uffy... un aiutino????:-[
-
Quote:
Originariamente inviato da
allmystery
uffy... un aiutino????:-[
Mmmmmh, si potrebbe vere un po' più di codice di così? :p
Tutta l'activity non sarebbe male...
-
risolto. l'insert non prevede il throw.