Per aggiungere una nuova colonna alla tabella è necessario utilizzare ALTER
. In Android è possibile aggiungere la nuova colonna all'interno dello onUpgrade()
.
Ci si potrebbe chiedere, come onUpgrade()
aggiungerà la nuova colonna?
Quando si implementa una sottoclasse di SQLiteOpenHelper
, è necessario chiamare il costruttore della superclasse: super(context, DB_NAME, null, 1);
nel costruttore della classe. Ci ho passato 1
per la versione.
Quando ho modificato la versione 1
sopra (2
o successiva), viene richiamato onUpgrade()
. Ed esegui le modifiche SQL che intendo fare. mio costruttore di classe dopo aver cambiato la versione:
public DatabaseHelper(Context context) {
super(context, DB_NAME, null, 2);//version changed from 1 to 2
}
SQL modifiche controlli di questo tipo, costruttore della superclasse confronta la versione del file db SQLite memorizzato con la versione che ho passato a super()
. Se questi numeri di versione (precedenti e attuali) sono diversi, viene richiamato onUpgrade()
.
codice dovrebbe essere simile a questo:
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// add new columns to migrate to version 2
if (oldVersion < 2) {
db.execSQL("ALTER TABLE " + TABLE_NAME + "ADD COLUMN school VARCHAR(250)");
}
// add new columns to migrate to version 3
if (oldVersion < 3) {
db.execSQL("ALTER TABLE " + TABLE_NAME + "ADD COLUMN age INTEGER");
}
}
hi! ho provato questo ho usato sul metodo di upgrate e dentro che ho messo query di tabella alter pure. Ma ancora non sono in grado di aggiungere una nuova colonna al database ... ma ya quando scrivo una query per aggiungere una nuova colonna e rinominato il database e il nome della tabella sono entrambi in grado di aggiungere una nuova colonna..ma con l'aiuto del metodo alter table non sono in grado di farlo ... il database e la tabella di ridimensionamento non è l'attività desiderata. Dovrebbe funzionare con alter tabella ... ancora non riesco a farlo con il metodo alter table .. – Aamirkhan
come aumentare il valore come 0,1,2,3, .......... – NagarjunaReddy
@NagarjunaReddy scusa per la risposta in ritardo. è possibile utilizzare questo metodo db.execSQL ("UPDATE table SET key = key + 1 WHERE name =?", New String [] {name}); – DevYudh