Ajouter une colonne à a table SQLite android Studio

Résolu/Fermé
rapidegoyes Messages postés 80 Date d'inscription samedi 22 février 2020 Statut Membre Dernière intervention 27 août 2024 - Modifié le 29 juil. 2021 à 21:54
rapidegoyes Messages postés 80 Date d'inscription samedi 22 février 2020 Statut Membre Dernière intervention 27 août 2024 - 8 août 2021 à 21:16
Bonsoir bunoCS

Je suis tes recommandations, me faut donc implémenter onUpgrade.
J'ai cherché et j'ai retenu ce qui suit:

    @Override
// supprime et recré la table pour la mettre à jour
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
switch (oldVersion) {
case 1:
db.execSQL(TABLE_NAME);

case 2:
db.execSQL("ALTER TABLE produit_table ADD COLUMN CONGELATEUR TEXT");
}
db.execSQL("DROP TABLE IF EXISTS" + TABLE_NAME);
onCreate(db);
}


Ceci peut-il convenir pour ajouter la nouvelle colonne CONGELATEUR ?

Début et extrait du fichier SQLiteDataBaseHelper

public class SQLiteDataBaseHelper extends SQLiteOpenHelper {

public static final String DATABASE_NAME = "rangement";
public static final String TABLE_NAME = "produit_table";
public static String COL_1 = "ID";
public static final String COL_2 = "TYPE";
public static final String COL_3 = "NOM";
public static final String COL_4 = "DATE";
public static final String COL_5 = "NOMBRE";
public static final String COL_6 = "ENDROIT";
public static final String COL_7 = "CONGELATEUR";

//constructeur rempli
public SQLiteDataBaseHelper(Context context){
super(context, DATABASE_NAME, null, 1);
}

@Override
//création de la table
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE table " + TABLE_NAME + "(ID INTEGER PRIMARY KEY AUTOINCREMENT," +
"TYPE TEXT, NOM TEXT, DATE TEXT, NOMBRE TEXT, ENDROIT TEXT, CONGELATEUR TEXT)");

}

@Override
// supprime et recré la table pour la mettre à jour
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
switch (oldVersion) {
case 1:
db.execSQL(TABLE_NAME);

case 2:
db.execSQL("ALTER TABLE produit_table ADD COLUMN CONGELATEUR TEXT");
}
db.execSQL("DROP TABLE IF EXISTS" + TABLE_NAME);
onCreate(db);
}


Merci pour ton aide cordialement
rapidegoyes



Configuration: Windows / Firefox 90.0
A voir également:

2 réponses

BunoCS Messages postés 15485 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 2 septembre 2024 3 905
30 juil. 2021 à 11:05
Hello,

Je ne comprends pas ce que fait cette ligne:
db.execSQL(TABLE_NAME);


De plus, tu finis ta méthode par un "DROP TABLE". Or, le principe du "drop" est de supprimer la table. Tes modifications, ainsi que tes données, sont donc perdues
1
rapidegoyes Messages postés 80 Date d'inscription samedi 22 février 2020 Statut Membre Dernière intervention 27 août 2024 7
8 août 2021 à 21:16
Bonsoir BunoCs,
je suis revenu à ma méthode onUgrade de départ

// supprime et cré à nouveau la table pour la mettre à jour
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS" + TABLE_NAME);
onCreate(db); //recré la table

}


J'ai abandonné l'ancienne appli et j'ai ouvert un nouveau projet en ajoutant la colonne Congelateur.
J'ai repris les parties de code viables par copié coller.
Tout est reprogrammé et ça marche au quart de tour !
Je peux maintenant gérer 8 congélateurs.

En tout cas un grand merci pour tes aides.
A+++ Cordialement
rapidegoyes
0