Addition sql sous android pour une gestion de stock

Fermé
kyller_4432 Messages postés 45 Date d'inscription mardi 14 juin 2022 Statut Membre Dernière intervention 21 juin 2023 - 3 avril 2023 à 19:07
kyller_4432 Messages postés 45 Date d'inscription mardi 14 juin 2022 Statut Membre Dernière intervention 21 juin 2023 - 6 avril 2023 à 16:53

Bonjour,

Je suis bloquer sur le faite de rajouter une quantite a une quantite stock dans ma base de donnée sous android.

Le but est que je puisse additionner 2 valeur dont celle qui est dans la bdd de base + une autre que je rentre depuis l'application

public class BdAdapter {

    static final int VERSION_BDD = 13;

    private static final String NOM_BDD = "gsb.db";
    private static final String TABLE_ECHANT = "echantillons";

    static final String COL_ID = "_id";
    static final int NUM_COL_ID = 0;
    static final String COL_CODE = "CODE";
    static final int NUM_COL_CODE = 1;
    static final String COL_LIB = "LIB";
    static final int NUM_COL_LIB = 2;
    static final String COL_STOCK = "STOCK";
    static final int NUM_COL_STOCK = 3;


    private CreateBdEchantillon  bdArticles;
    private Context context;
    private SQLiteDatabase db;

    public BdAdapter(Context context){
        this.context = context;
        bdArticles = new CreateBdEchantillon (context, NOM_BDD, null, CreateBdEchantillon.VERSION_BDD);
    }
    //si la base n’existe pas, l’objet SQLiteOpenHelper exécute la méthode onCreate
    // si la version de la base a changé, la méthode onUpgrade sera lancée, dans les
    // 2 cas l’appel à getWritableDatabase ou getReadableDatabase renverra la base
    // de données en cache, nouvellement ouverte, nouvellement créée ou mise à jour
    public BdAdapter open (){
        db = bdArticles.getWritableDatabase();
     return this;
    }
    public BdAdapter close (){
        db.close();
        return this;
    }

    public long insererEchantillon(echantillon unEchant){
        //Création d'un ContentValues (fonctionne comme une HashMap)
        ContentValues values = new ContentValues();
        //on lui ajoute une valeur associé à une clé
        // (qui est le nom de la colonne où on veut mettre la valeur)
        values.put(COL_CODE, unEchant.getCode());
        values.put(COL_LIB, unEchant.getLibelle());
        values.put(COL_STOCK, unEchant.getQuantiteStock());
        //on insère l'objet dans la BDD via le ContentValues
        return db.insert(TABLE_ECHANT, null, values);
    }

    public long insererEchantillon2(echantillon unEchant2){
        //Création d'un ContentValues (fonctionne comme une HashMap)
        ContentValues values = new ContentValues();
        //on lui ajoute une valeur associé à une clé
        // (qui est le nom de la colonne où on veut mettre la valeur)
        values.put(COL_CODE, unEchant2.getCode());
        values.put(COL_LIB, unEchant2.getLibelle());
        values.put(COL_STOCK, unEchant2.getQuantiteStock());
        //on insère l'objet dans la BDD via le ContentValues
        return db.insert(TABLE_ECHANT, null, values);
    }
    public long insererEchantillon3(echantillon unEchant3){
        //Création d'un ContentValues (fonctionne comme une HashMap)
        ContentValues values = new ContentValues();
        //on lui ajoute une valeur associé à une clé
        // (qui est le nom de la colonne où on veut mettre la valeur)
        values.put(COL_CODE, unEchant3.getCode());
        values.put(COL_LIB, unEchant3.getLibelle());
        values.put(COL_STOCK, unEchant3.getQuantiteStock());
        //on insère l'objet dans la BDD via le ContentValues
        return db.insert(TABLE_ECHANT, null, values);
    }
    public long insererEchantillon4(echantillon unEchant4){
        //Création d'un ContentValues (fonctionne comme une HashMap)
        ContentValues values = new ContentValues();
        //on lui ajoute une valeur associé à une clé
        // (qui est le nom de la colonne où on veut mettre la valeur)
        values.put(COL_CODE, unEchant4.getCode());
        values.put(COL_LIB, unEchant4.getLibelle());
        values.put(COL_STOCK, unEchant4.getQuantiteStock());
        //on insère l'objet dans la BDD via le ContentValues
        return db.insert(TABLE_ECHANT, null, values);
    }

    private echantillon cursorToEchant(Cursor c){
        //Cette méthode permet de convertir un cursor en un echantillon
        // si aucun élément n'a été retourné dans la requête, on renvoie null
        echantillon unEchant=null ;
        if (c.getCount() != 0){
            c.moveToFirst();
            //on se place sur le premier élément
            unEchant = new echantillon();
            //On créé un echantillon //on lui affecte toutes les infos grâce aux infos contenues dans le Cursor
            unEchant.setCode(c.getString(NUM_COL_CODE));
            unEchant.setLibelle(c.getString(NUM_COL_LIB));
            unEchant.setQuantiteStock(c.getString(NUM_COL_STOCK));
        }
        c.close(); //On ferme le cursor
        return unEchant; //On retourne l'echantillon
        }
        public echantillon getEchantillonWithLib(String unCode){
            //Récupère dans un Cursor les valeurs correspondant à un echantillon
            // grâce à sa designation)
            Cursor c = db.query(TABLE_ECHANT, new String[] {COL_ID,COL_CODE, COL_LIB,
                    COL_STOCK}, COL_CODE + " LIKE \"" + unCode +"\"", null, null, null, null);
            return cursorToEchant(c);
    }

    public int updateEchantillon(String unCode, String uneQuantite){ //addition
        //La mise à jour d'un echantillon dans la BDD fonctionne plus ou moins
        // comme une insertion, il faut simple préciser quel echantillon
        // on doit mettre à jour grâce à son code
        ContentValues values = new ContentValues();
        values.put(COL_CODE, unCode);
        values.put(COL_STOCK, uneQuantite);
        //recupérer la quantité + une nouvelle quantité

        return db.update(TABLE_ECHANT, values ,COL_CODE + " = \"" +unCode+"\"", null);
    }
A voir également:

3 réponses

yg_be Messages postés 22696 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 avril 2024 1 471
3 avril 2023 à 20:30

bonjour,

as-tu une question?

ta ligne 118 ne fonctionne pas?

0
kyller_4432 Messages postés 45 Date d'inscription mardi 14 juin 2022 Statut Membre Dernière intervention 21 juin 2023
3 avril 2023 à 20:35

La ligne 118 sert a envoyé dans la bdd mais rien de plus. Sa fait depuis ce matin que je suis dessus et je trouve pas de solution si vous avez un ou deux tuyaux pour le faire je suis preneur 

0
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 3 894 > kyller_4432 Messages postés 45 Date d'inscription mardi 14 juin 2022 Statut Membre Dernière intervention 21 juin 2023
4 avril 2023 à 09:09

Bonjour,

Quelle est la question exactement ? Qu'est-ce qui bloque ?

0
kyller_4432 Messages postés 45 Date d'inscription mardi 14 juin 2022 Statut Membre Dernière intervention 21 juin 2023
4 avril 2023 à 09:48

J'arrive pas a trouver comment faire pour mettre a jour mon stock, j'ai regardé des tuto ou autre sur internet mais rien qui fonctionne comme voulu. Ducoup je repars de 0 pour mettre à jour mon stock.

0
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 3 894
4 avril 2023 à 10:41

OK, d'accord, mais qu'est-ce qui ne fonctionne pas ? La lecture de la base ? L'écriture ?

Voici le guide développeur pour SQLite: https://developer.android.com/training/data-storage/sqlite?hl=fr#java

D'ailleurs, tu as vraiment besoin de passer par SQLiteDatabase directement ? Aujourd'hui, les bonnes pratiques conseillent très fortement:

- d'utiliser Kotlin plutôt que Java

- d'utiliser Room pour la gestion de la base de données : https://developer.android.com/training/data-storage/room?hl=fr

0
kyller_4432 Messages postés 45 Date d'inscription mardi 14 juin 2022 Statut Membre Dernière intervention 21 juin 2023 > BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024
6 avril 2023 à 16:52

J'en doute pas mais le problème c'est que en cours on nous oblige a le faire en java et comme sa

0
kyller_4432 Messages postés 45 Date d'inscription mardi 14 juin 2022 Statut Membre Dernière intervention 21 juin 2023
6 avril 2023 à 16:53
package com.example.gsb;

import static com.example.gsb.BdAdapter.COL_STOCK;

import android.content.ContentValues;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

public class majEchantillon extends AppCompatActivity {

    private EditText textViewCodeM;

    private EditText textViewQte;

    private Button buttonSupprimer;

    private Button buttonAjouterM;

    private Button buttonQuitterM;

    private TextView textViewAjout;

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.majechantillon);
        BdAdapter bdAdapter = new BdAdapter(this);

        textViewCodeM = findViewById(R.id.textViewCodeM);
        textViewQte = findViewById(R.id.textViewQte);
        this.buttonSupprimer = findViewById(R.id.buttonSupprimer);
        this.buttonAjouterM = findViewById(R.id.buttonAjouterM);
        this.buttonQuitterM = findViewById(R.id.buttonQuitterM);

        buttonAjouterM.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String code = textViewCodeM.getText().toString();
                String quantite = textViewQte.getText().toString();

                //Echantillon echantillonAjout = new Echantillon(code, quantiteStock);


                bdAdapter.open();
                bdAdapter.updateEchantillon(code, quantite);
                bdAdapter.close();

                Intent AjoutMaj = new Intent(majEchantillon.this, MainActivity.class);
                startActivity(AjoutMaj);
            }
        });
        buttonSupprimer.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String code = textViewCodeM.getText().toString();
                String quantite = textViewQte.getText().toString();

                bdAdapter.open();
                bdAdapter.updateEchantillonWithCode(code,quantite);
                bdAdapter.close();

                Intent supprimerMaj = new Intent(majEchantillon.this, MainActivity.class);
                startActivity(supprimerMaj);
            }
        });

        buttonQuitterM.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent quitterMAJ = new Intent(majEchantillon.this, MainActivity.class);
                startActivity(quitterMAJ);
            }
        });
    }


    public void MAJechantillon(String code, String quantite){

        SQLiteDatabase db = new CreateBdEchantillon(this, "echantillons.db", null, CreateBdEchantillon.VERSION_BDD).getWritableDatabase();
        // Créer un objet ContentValues avec les nouvelles valeurs
        ContentValues values = new ContentValues();
        values.put(CreateBdEchantillon.COL_STOCK, quantite);

        // Mettre à jour l'échantillon dans la base de données
        String selection = COL_STOCK + " = ?";
        String[] selectionArgs = { Integer.toString(Integer.parseInt(quantite)) };
        int numRowsAffected = db.update(CreateBdEchantillon.TABLE_ECHANT, values, CreateBdEchantillon.COL_CODE + " + ", new String[]{code});

        // Vérifier si la mise à jour a réussi
        if (numRowsAffected > 0) {
            Toast.makeText(this, "L'échantillon a été modifié", Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(this, "La modification a échoué", Toast.LENGTH_SHORT).show();
        }

        // Fermer la base de données
        db.close();
    }
}
// a faire maj ajout la quantite actuelle + la nouvelle quantité
// a faire soustraction de la quantite actuelle - la quantite enlever

j'ai aussi fait sa mais impossible de trouver une solution pour mettre a jour ma base en faisant un ajout de stock

0