2012-07-05 5 views

risposta

3

il modo in cui l'ho fatto è creare un database separato, copiare tutto da quello corrente a quello nuovo temporaneo, quindi rilasciare il vecchio database, fare tutto ciò che c'è e quindi copiare le informazioni dal database temporaneo.

non è sicuro se c'è un altro modo per farlo, ma se c'è mi piacerebbe sentire su di esso

+0

Sembra essere molto più facile. Io uso SQLiteOpenHelper. Quindi onCreate() non è mai stato chiamato se il DB esiste già. Quando il numero di versione aumenta, viene chiamato onUpdate(). In onUpdate() Ho aggiunto la mia nuova tabella con "Crea tabella se non esiste". Dalla documentazione di SQLITE.ORG: Tuttavia, se la clausola "SE NON ESISTE" è specificata come parte dell'istruzione CREATE TABLE e una tabella o vista con lo stesso nome esiste già, il comando CREATE TABLE non ha alcun effetto (e non viene restituito alcun messaggio di errore). Ora la tabella è stata creata e va bene. – venni

0

Creare una classe che estende SQLiteOpenHelper, ignorare onOpen (SQLiteDatabase db), creare una stringa con la creazione della tabella query, quindi utilizzare db.execSQL (String str);

4

Sembra molto più semplice. Io uso SQLiteOpenHelper. Quindi onCreate() non è mai stato chiamato se il DB esiste già. Quando il numero di versione aumenta, viene chiamato onUpdate(). In onUpdate() ho aggiunto la mia nuova tabella con "create table if not exists". Dalla documentazione di SQLITE.ORG: Tuttavia, se la clausola "SE NON ESISTE" è specificata come parte dell'istruzione CREATE TABLE e esiste già una tabella o una vista con lo stesso nome, il comando CREATE TABLE non ha alcun effetto (e non messaggio di errore viene restituito). Ora la tabella è stata creata e va bene. Metodo

0

Se si desidera aggiungere nuova tabella nel database esistente allora si dovrebbe fare questo all'interno ONUPGRADE() come: -

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    if (oldVersion == xyz) { 
     db.execSQL(QUERY_CREATE_TABLE_..........NEW); 
    } 
} 

Qui xyz è la vecchia versione del database in cui si desidera aggiungi una nuova tabella.

E ricorda di aumentare la Database_Version

Quando aumentiamo la versione del database poi ONUPGRADE) metodo chiamate (e usando condizioni aggiungere la tabella.

e anche creare nuova tabella all'interno onCreate() con le tabelle esistenti, per le installazioni fresche come: -

@Override 
public void onCreate(SQLiteDatabase db) { 
     db.execSQL(QUERY_CREATE_TABLE_..........OLD); 
     db.execSQL(QUERY_CREATE_TABLE_..........OLD); 
     db.execSQL(QUERY_CREATE_TABLE_..........NEW); 
} 
Problemi correlati