Impossible d'insérer des données dans ma table
Résolu
rapidegoyes
Messages postés
138
Date d'inscription
Statut
Membre
Dernière intervention
-
rapidegoyes Messages postés 138 Date d'inscription Statut Membre Dernière intervention -
rapidegoyes Messages postés 138 Date d'inscription Statut Membre Dernière intervention -
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
Extrait de code fichier SqliteDataBaseHelper
Vraiment je ne comprends pas aucune erreur et pourtant impossible d'entrer de données !
Un grand merci à qui pourrait m'épauler.
A+++ cordialement
rapidegoyes
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[] endroitProduit = {"Gauche-bas", "Gauche-haut", "Milieu-bas", "Milieu-haut", "Droite-bas", "Droite-haut",
"Dessus", "Compartiment", "Panier gauche", "Panier droite", "Tiroir1", "Tiroir2", "Tiroir3", "Tiroir4", "Tiroir5", "Tiroir6",
"Tiroir7", "Bac gauche", "Bac droite"};
String[] années = {"Année","2019", "2020", "2021", "2022", "2023", "2024", "2025", "2026"};
String[] mois = {"Mois","-01-", "-02-", "-03-", "-04-", "-05-", "-06-", "-07-", "-08-", "-09-", "-10-", "-11-", "-12-"};
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"};
String [] choix_congelateur = {"Cave1", "Cave2", "Cuisine1", "Cuisine2", "Garage1", "Garage2",
"Debarras1", "Debarras2"};
//déclaration des objets widget
EditText nomInput;
EditText nombreInput;
Spinner spinerinputType;
Spinner spinnerAnnees;
Spinner spinnerMonate;
Spinner spinnerTag;
Spinner spinnerendroit;
Button buttonAddData;
Button supprimeData;
Spinner Congel_Choix;
@SuppressLint("RtlHardcoded")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
db = new SQLiteDataBaseHelper(this);
//*************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();
// récupération des différents widgets
spinerinputType = findViewById(R.id.spinner2);
nomInput = findViewById(R.id.nom_editText);
nombreInput = findViewById(R.id.nombre_edittext);
spinnerendroit = findViewById(R.id.spinner);
buttonAddData = findViewById(R.id.ajouter_button);
spinnerAnnees = findViewById(R.id.spinnerDate);
spinnerMonate = findViewById(R.id.spinnerMois);
spinnerTag = findViewById(R.id.spinnerJours);
supprimeData = findViewById(R.id.viderBDD); //récupération du bouton supprimer données
Congel_Choix = findViewById(R.id.spinner_Congelo); //récup du spinner choix de congélateur
AddData(); //appel fonction AddData
//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";
//constructeur rempli
public SQLiteDataBaseHelper(Context context) {
super(context, DATABASE_NAME, null, 1);
}
//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 !
Un grand merci à qui pourrait m'épauler.
A+++ cordialement
rapidegoyes
Configuration: Windows / Firefox 90.0
A voir également:
- Impossible d'insérer des données dans ma table
- Fuite données maif - Guide
- Table des matières word - Guide
- Table ascii - Guide
- Insérer une vidéo dans powerpoint - Guide
- Insérer signature word - Guide
2 réponses
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
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
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
cordialement
rapidegoyes
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
cordialement
rapidegoyes