rapidegoyes
Messages postés92Date d'inscriptionsamedi 22 février 2020StatutMembreDernière intervention16 octobre 2024
-
25 juil. 2021 à 22:00
rapidegoyes
Messages postés92Date d'inscriptionsamedi 22 février 2020StatutMembreDernière intervention16 octobre 2024
-
27 juil. 2021 à 21:44
Bonjour,
Je code une appli avec BDD sqlite.
J'ai ajouté une colonne CONGELATEUR à ma table.
Depuis je ne peux plus insérer de données dans la BDD.
Pourtant je n'ai aucune erreur ni dans Build et ni dans Logcat.
Mon appli se lance mais plus moyen de rentrer des lignes.
Avant l'ajout de cette colonne CONGELATEUR tout était OK.
Ci-dessous mon extrait de code:
Fichier MainActivity.java
public class MainActivity extends AppCompatActivity { SQLiteDataBaseHelper db; //déclaration db
//déclaration tableaux pour spinner et spinner2 String[] typeProduit = {"viande", "fromage", "fruit", "poisson", "patisserie", "legume", "divers"};
String[] jours = {"Jour","01","02","03","04","05","06","07","08","09","10","11","12","13","14", "15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31"};
//*************mise en page du toast******************** Context context = getApplicationContext(); CharSequence text = " ATTENTION, remplir tout avant de cliquer sur enregistrer!"; int duration = Toast.LENGTH_SHORT; Toast toast = Toast.makeText(context, text, duration); toast.setGravity(Gravity.TOP|Gravity.LEFT, 40, 200); toast.show();
//créer le ArrayAdapter instance concernant le type de produit final ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(this, R.layout.spinner_item, typeProduit); adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); //Setting the ArrayAdapter data on the Spinner spinerinputType.setAdapter(adapter2);
//créer le ArrayAdapter instance concernant l'endroit de stockage du produit ArrayAdapter<String> adapter = new ArrayAdapter<>(this, R.layout.spinner_item, endroitProduit); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); //Setting the ArrayAdapter data on the Spinner spinnerendroit.setAdapter(adapter);
//créer le ArrayAdapter instance concernant les années final ArrayAdapter<String> adapter3 = new ArrayAdapter<>(this, R.layout.spinner_item, années); adapter3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); //Setting the ArrayAdapter data on the Spinner spinnerAnnees.setAdapter(adapter3);
//créer le ArrayAdapter instance concernant les mois final ArrayAdapter<String> adapter4 = new ArrayAdapter<>(this, R.layout.spinner_item, mois); adapter4.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); //Setting the ArrayAdapter data on the Spinner spinnerMonate.setAdapter(adapter4);
//créer le ArrayAdapter instance concernant les jours final ArrayAdapter<String> adapter5 = new ArrayAdapter<>(this, R.layout.spinner_item, jours); adapter5.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); //Setting the ArrayAdapter data on the Spinner spinnerTag.setAdapter(adapter5);
//créer le ArrayAdapter instance concernant les jours final ArrayAdapter<String> adapter6 = new ArrayAdapter<>(this, R.layout.spinner_item, choix_congelateur); adapter6.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); //Setting the ArrayAdapter data on the Spinner Congel_Choix.setAdapter(adapter6);
//écouteur sur le bouton supprimer les données supprimeData.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { showMessage(); //appel de la fonction showMessage } });
} //fin de la méthode onCreate
//fonction pour le message d'alerte pour confirmation supprimer les données private void showMessage(){ AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("ATTENTION ! Suppression de toutes les données de la BDD"); builder.setMessage("Voulez vous vraiment supprimer toutes les données ?:"); builder.setPositiveButton("OK", null); builder.setNegativeButton("Annuler", null);
builder.setPositiveButton("OK", new DialogInterface.OnClickListener(){ public void onClick(DialogInterface dialog, int which) { db.deleteAll(); //appel de la fonction deleteAll qui se trouve dans SQLiteDatabaseHelper Toast.makeText(getApplicationContext(), "OK les données sont supprimées!", Toast.LENGTH_LONG).show(); } }); builder.create().show(); }
//fonction qui insère les données public void AddData(){ buttonAddData.setOnClickListener( new View.OnClickListener(){ public void onClick(View view) { // insertion de nouveaux enegistrements par click sur le bouton
//appel de la fonction insertData boolean isInserted = db.insertData( spinerinputType.getSelectedItem().toString(), nomInput.getText().toString(), spinnerAnnees.getSelectedItem().toString() +spinnerMonate.getSelectedItem().toString() + spinnerTag.getSelectedItem().toString(), nombreInput.getText().toString(), spinnerendroit.getSelectedItem().toString(), Congel_Choix.getSelectedItem().toString());
// déclenchement du toast pour voir s'il y a insertion if (isInserted) { Toast.makeText(MainActivity.this, "Les données sont insérées avec succès", Toast.LENGTH_SHORT).show(); } else Toast.makeText(MainActivity.this, "Les données ne sont pas insérées", Toast.LENGTH_SHORT).show();
}
} ); }
}
Extrait de code fichier SqliteDataBaseHelper
//méthode pour création de la BDD et Table public class SQLiteDataBaseHelper extends SQLiteOpenHelper { public static final String DATABASE_NAME = "Book.db"; public static final String TABLE_NAME = "book_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";
//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"); }
//supprime et recré la table pour la mettre à jour public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); onCreate(db); }
// méthode qui insère les données public boolean insertData(String type, String nom, String date, String nombre, String endroit, String congelateur) { SQLiteDatabase db = this.getWritableDatabase(); //ouvre la table en écriture
ContentValues contentValues = new ContentValues(); contentValues.put(COL_2, type); contentValues.put(COL_3, nom); contentValues.put(COL_4, date); contentValues.put(COL_5, nombre); contentValues.put(COL_6, endroit); contentValues.put(COL_7, congelateur); long result = db.insert(TABLE_NAME, null, contentValues); return result != -1; }
//méthode appelée pour faire fonctionner le simpleCursordapter public Cursor crerColonne(){ SQLiteDatabase db = this.getWritableDatabase(); return db.rawQuery("SELECT ID as _id, TYPE, NOM, DATE, NOMBRE, ENDROIT, CONGELATEUR, * FROM book_table ", null); }
public void supprime_ligne(long id) { SQLiteDatabase db = this.getWritableDatabase(); db.delete(TABLE_NAME, "id = ? ", new String[]{Integer.toString((int) id)}); }
public Cursor selection_Viande(){ SQLiteDatabase db = this.getWritableDatabase(); return db.rawQuery( "SELECT ID as _id, * FROM book_table WHERE TYPE = 'viande' ORDER BY TYPE, DATE ASC", null); }
Vraiment je ne comprends pas aucune erreur et pourtant impossible d'entrer de données !
BunoCS
Messages postés15495Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention23 octobre 20243 909 26 juil. 2021 à 09:56
Hello,
Est-ce que ton code fonctionne si tu désinstalles et tu ré-installes l'app ?
Si tu testes avec une app déjà installée, il te faut implémenter la callback
SQLiteOpenHelper.onUpgrade()
pour pouvoir ajouter une colonne à ta table déjà créée
rapidegoyes
Messages postés92Date d'inscriptionsamedi 22 février 2020StatutMembreDernière intervention16 octobre 20247 Modifié le 27 juil. 2021 à 21:45
Bonsoir BunoCS,
J'ai suivi tes conseils, après réinstallation plus rien ! je n'arrivais plus à lancer l'appli.
Le fichier AndroidManifest était rempli d'erreurs.
J'ai tout viré et je reprends tout à tête reposée depuis le niveau qui fonctionne.
J'ai sans doute fait une grosse connerie.
En tout cas un grand merci pour ton aide, à plus pour me secourir