Aller au contenu

[DEBUTANT] Appli de liste de courses


Recommended Posts

Posté(e) (modifié)

bonsoir à tous,

je developpe mon application dans le cadre de ma formation.

Je vais devoir présenter mon travail dans une dizaine de jours, donc je vais travailler dessus le plus possible :)

j'ai commencé à implémenter l'utilisation d'une Base de Données.

Modifié par Goten44
Posté(e)

Bonjour,

j'ai fini ma classe d'acces à la Base de données ... et ca marche pas .... :mad:

voila ma classe :

import android.content.ContentValues;
import android.content.Context;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteQueryBuilder;
import android.util.Log;


public class BDAcces 
{
   // ATTRIBUTS
   private Context myContext ;
   private DatabaseHelper myDatabaseHelper ;
   private SQLiteDatabase myDatabase ;
   private static final String TAG = "BDAccess"; // pour le log (pas important)

   // CONSTRUCTEUR DE MA CLASSE
   public BDAcces(Context ctx) 
   { 
        this.myContext = ctx;
   }

   // NOM DE LA BASE DE DONNEES
   private static final String DATABASE_NAME = "db_liste_courses";
   // NOM DES TABLES
   private static final String ARTICLE_TABLE = "article";
   // VERSION DE LA BDD
   private static final int DATABASE_VERSION = 1;
   // CREATION DES TABLES DE LA BDD
       // Table ARTICLE
       private static final String CREATE_ARTICLE_TABLE ="CREATE TABLE article("
       +"id_article BIGINT PRIMARY KEY  AUTOINCREMENT,"
       +"nom_article VARCHAR(100) NOT NULL,"
       +"quantite_article VARCHAR(10) NOT NULL,"
       +")";
       // remplir Table ARTICLE
       private static final String FILL_ARTICLE_TABLE = "INSERT INTO article('nom_article', 'quantite_article') VALUES('carottes', '15') ;" ;







               // Classe DATABASEHELPER
               private static class DatabaseHelper extends SQLiteOpenHelper 
               {
                   //ouverture ou creation de la base si elle n'existe pas
                   public DatabaseHelper(Context context) 
                   {
                       super(context, DATABASE_NAME, null, DATABASE_VERSION);
                   }

                   @Override
                   // methode qui est appelé quand on ouvre la bas pour la première fois
                   public void onCreate(SQLiteDatabase db) 
                   {
                       db.execSQL(CREATE_ARTICLE_TABLE);
                       db.execSQL(FILL_ARTICLE_TABLE);
                   }

                   @Override        //methode permettant une lis aà jour de notre pas de donné
                   public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 
                   {
                       Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
                       + newVersion + ", which will destroy all old data");
                       db.execSQL("DROP TABLE IF EXISTS "+ARTICLE_TABLE);
                       onCreate(db);
                   }
               }



   public void open() throws SQLException
   {
       myDatabaseHelper = new DatabaseHelper(myContext);
       myDatabase = myDatabaseHelper.getWritableDatabase();
   }
   public void close()
   {
       myDatabaseHelper.close();
   }
   public long insertArticle(String nom_article, String quantite_article)
   {
       ContentValues initialValues = new ContentValues();
       initialValues.put("nom_larecette", nom_article);
       initialValues.put("recette_larecette", quantite_article);
       return myDatabase.insert(ARTICLE_TABLE, null, initialValues);
   }



}

dans mon ACTIVITY , je crée une instance de cette classe.

et quand je fait "monInstance.open() ;" ou "monInstance.close() ;"

ca plante .... :mad:

pouvez vous m'aider ?

merci beaucoup !!!

Posté(e) (modifié)

// ==> Lisez le EDIT en bas ... :|

J'ai beau retourner le problème dans tous les sens, je ne trouve pas la solution ...

j'ai lu sur un forum qu'il faut changer la DATABASE_VERSION lors de sa modification ...

mais doit-on le faire lors de la modification de la structure des Tables ou lors de l'ajout ou la suppression de données ... ?

je commence à craquer .... :rolleyes:

pouvez vous m'expliquer comment construire une classe (la plus basique possible) de base de données ... ?

(après avoir compris la construction d'une telle classe, je pourrais construire une classe pour mon appli avec mes données ...)

ce que j'ai compris c'est qu'il fallait ca : (comme squelette)

(mais tout ce que j'ai tenté après ca à échoué ...

package com.test;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;




public class Bdd extends SQLiteOpenHelper 
{
   private static final String DATABASE_NAME = "db_name";
   private static final String ARTICLE_TABLE = "table_name";
   private static int DATABASE_VERSION = 1;


   public Bdd(Context context, String name, CursorFactory factory, int version) 
   {
       super(context, name, factory, version );
   }

   @Override
   public void onCreate(SQLiteDatabase db) 
   {

   }

   @Override
   public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 
   {

   }

}

EDIT :

J'ai viré mes requetes SQL et cela fonctionne ... (fonctionne dans le sens que jarrive a ouvrir et fermer la connexion à la BDD)

Je ne comprend pas encore pourquoi mais c'était ma requetea SQL de création qui faisait planter l'appli ...

(déjà , je vais mieux dormir cette nuit)

Modifié par Goten44
Posté(e)

Bonjour à tous,

J'ai repris presque tout mon code ...

c'est maintenant beaucoup plus propre. :)

j'ai écrit un cursorAdapter personalisé (pour lister mes articles).

et j'arrive à ajouter des articles à ma BDD (des carottes :cool: )

et j'arrive à liste la table "article" de ma BDD dans mon activity lors du lancement de cette dernière.

listecourses.png

Posté(e)

Bonjour,

Alors mon appli avance tranquillement ...

- Je liste les articles au lancement de l'appli

- J'affiche un "Dialog" de saisie et lors que la validation du dialog, j'enregistre la saisie dans la BDD

- quand cet enregistrement a lieu, le dialog disparait (avec la méthode Dismiss() ) et je retombe sur mon Activity principale

- Mon problème : je n'arrive pas à actualiser mon Activity principale lorsque le dialog disparait

J'ai fait une méthode REFRESH() dans mon activity, mais je n'arrive pas à faire en sorte qu'elle soit appellée quand le dialog disparait. :|

Dans la documentation, j'ai trouvé OnDismissListener ... mais j'ai beau essayer, je ne comprend pas comment cela fonctionne...

Est ce que quelqu'un à déjà fait ca ? et pourrait m'expliquer ? :|

merci beaucoup !!! ;)

Posté(e)

J'ai enfin réussi à faire mon rafraichissement ;)

Donc j'avance de nouveau à bonne allure :D

D'ici peu de temps je vous proposerai une build en téléchargement ;)

(une version débuggée de l'appli en développement)

Vous pourrez ainsi vous faire une idée de l'avancement et de la tournure que prend l'appli :D

Posté(e)

merci beaucoup ! :D

c'est en partie grâce à toi que j'en suis arrivé là ;)

Je vais essayer de finir la 1ère version de mon appli ce weekend ;)

bon courage à toi !

Posté(e)

Bonsoir à tous,

La première version de mon application est presque terminée...

mais il reste un détail a régler et je n'arrive pas à trouve la solution.

Je veux afficher un Context Menu quand on fait un appui long sur les elements de la liste.

et que ce menu affiche MODIFIER et SUPPRIMER.

j'arrive a afficher ce menu, j'ai fait une fonction qui supprime un élément...

mais je ne comprend pas comment faire pour identifier l'élément sur lequel a été fait l'appui long ...

merci de votre lecture :)

Posté(e)

Bon j'ai finalement trouvé comment faire ...

voila la 1ere beta de mon application : http://www.megaupload.com/?d=BI5KV9UB

c'est tout juste développé et debuggué ...

les foncions principales fonctionnent mais dans le menu en bas il y a 2 cases qui ne font rien ...

(réactiver les produits et preferences)

c'est fonctions seront dans la prochaines version.

Merci de laisser vos commentaires et avis :D !!

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...