Vorrei aggiungere una tabella aggiuntiva nel mio DB esistente senza perdita di dati. Quindi abbandonare i tavoli e crearli nuovi non è un'opzione. Qual è il modo migliore per farlo?Creare una tabella aggiuntiva in SQLITE esistente (senza perdita di dati)
risposta
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
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);
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
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);
}
- 1. Aggiornamento SQLite Android senza perdita di dati
- 2. Creare @TableVariable in base a una tabella di database esistente?
- 3. Creare una tabella senza colonne
- 4. Creare virtualenv nella directory esistente senza creare una directory "locale"
- 5. Aggiungere la colonna di dati a una tabella mySQL esistente
- 6. come aggiungere una colonna in una tabella sqlite in SWIFT
- 7. Mysql caricare i dati per colonna esistente di una tabella
- 8. Utilizzare json_populate_recordset senza creare una tabella?
- 9. SQLite crea una tabella FTS prepopolata
- 10. Aggiungi dati alla tabella pytables esistente
- 11. Come creare una tabella dinamica di dati in Android?
- 12. Come creare una raccolta di database mongodb senza aggiungere dati?
- 13. Ho bisogno di un buon metodo per cambiare (SQLite) tipo di dati colonna
- 14. Creare una cartella esistente in un repository
- 15. Crea query MySQL per creare una tabella da una tabella esistente
- 16. Tabella di controllo esistente
- 17. Modificare la chiave primaria di una tabella in SQLite
- 18. Come utilizzare un database sqlite esistente in html5
- 19. come creare un modello yii senza una tabella di database
- 20. Creare file di migrazione su rotaie dalla tabella esistente mysql
- 21. Come copiare una tabella in SQL Server, senza i dati?
- 22. Numero massimo di righe in una tabella sqlite?
- 23. byte a lettura umana e ritorno. senza perdita di dati
- 24. Ritaglia senza perdita di dati (taglia e incolla) per JPEG
- 25. creare una colonna indicizzata in sqlite
- 26. Compressione dati SQLite trasparente
- 27. Libreria per ulteriore compressione Jpeg senza perdita di dati
- 28. Creazione di una sequenza su una tabella esistente
- 29. Assegnare un vettore a una specifica riga di tabella di dati esistente in R
- 30. Come rilevare la compressione JPEG senza perdita di dati?
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