Autore Topic: Alter Table SQLite  (Letto 750 volte)

Offline Kecco11

  • Utente junior
  • **
  • Post: 99
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    GS4
Alter Table SQLite
« il: 13 Agosto 2013, 16:09:03 CEST »
0
Ciao, nel mio db SQLite devo aggiungere un campo ad una delle tabelle presenti.
Devo utilizzare il metodo onUpgrade ed al suo interno Alter Table con l'aggiunta del campo..
Ma in questo modo ogni volta che viene avviata l'app il metodo crea il nuovo campo giusto?? servirebbe un modo per verificare se il campo è presente??
Come??
Grazie

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Alter Table SQLite
« Risposta #1 il: 13 Agosto 2013, 18:21:34 CEST »
0
onUpgrade viene lanciato solo una volta, quando fai l'upgrade dell'app.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Kecco11

  • Utente junior
  • **
  • Post: 99
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    GS4
Re:Alter Table SQLite
« Risposta #2 il: 13 Agosto 2013, 23:02:13 CEST »
0
se faccio così crasha:
Codice (Java): [Seleziona]
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
               
            if (newVersion > oldVersion) {  
                db.execSQL("ALTER TABLE miaTable ADD COLUMN camponuovo TEXT");  
            }  
        }

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Alter Table SQLite
« Risposta #3 il: 14 Agosto 2013, 10:33:55 CEST »
0
il LogCat cosa dice del crash?
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Kecco11

  • Utente junior
  • **
  • Post: 99
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    GS4
Re:Alter Table SQLite
« Risposta #4 il: 14 Agosto 2013, 17:23:52 CEST »
0
Se provo ad inserire i dati il log dice semplicemente che la colonna non esiste vi spiego cosa ho fatto fin ora:
Ho cambiato la versione del DB (da 1 a 2)
Ho inserito nel onUpgrade questo codice:
Codice (Java): [Seleziona]
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
               
            if (newVersion > oldVersion) {  
                db.execSQL("ALTER TABLE miaTable ADD COLUMN note TEXT");  
            }  
        }
ed ho dichiarato la stringa della nuova colonna: public static final String NOTE = "note";



La mia domanda è, devo fare altre cose oltre l'ALTER TABLE?
Grazie
« Ultima modifica: 14 Agosto 2013, 20:55:39 CEST da Kecco11 »

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Alter Table SQLite
« Risposta #5 il: 15 Agosto 2013, 12:46:01 CEST »
+1
Sembra quasi che la colonna non sia stata aggiunta. Non è che hai fatto un upgrade alla 2 senza l'alter table e poi di nuovo un update della 2 con l'alter table? In tal caso la seconda volta non lo esegue.

Se puoi dovresti ripartire mettendo la 1 sul dispositivo e riprovare a upgradare alla 2.

Altre idee da prendere in considerazione:
- invece di modificare una tabella esistente, crearne una nuova dove copi tutto ed hai un colonna in più.
- aggiungere una funzione di export database, che può esserti utile anche nel debug.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Kecco11

  • Utente junior
  • **
  • Post: 99
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    GS4
Re:Alter Table SQLite
« Risposta #6 il: 15 Agosto 2013, 17:19:32 CEST »
0
ok colonna creata solo se l'applicazione viene aggiornata...ma se installo l'apk con la nuova versione del db senza avere installato il vecchio apk la nuova colonna non viene creata!! come faccio??
Grazie
« Ultima modifica: 18 Agosto 2013, 00:53:15 CEST da Kecco11 »

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Alter Table SQLite
« Risposta #7 il: 19 Agosto 2013, 19:50:46 CEST »
0
ok colonna creata solo se l'applicazione viene aggiornata...ma se installo l'apk con la nuova versione del db senza avere installato il vecchio apk la nuova colonna non viene creata!! come faccio??

Nell'helper dovresti avere anche la CREATE TABLE per la "prima installazione". Devi aggiornare anche quella con la nuova colonna.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Kecco11

  • Utente junior
  • **
  • Post: 99
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    GS4
Re:Alter Table SQLite
« Risposta #8 il: 19 Agosto 2013, 20:02:34 CEST »
0
Risolto
« Ultima modifica: 20 Agosto 2013, 21:07:27 CEST da Kecco11 »