Aller au contenu

[DEBUTANT] Appli de liste de courses


Invité

Recommended Posts

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
Lien vers le commentaire
Partager sur d’autres sites

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 !!!

Lien vers le commentaire
Partager sur d’autres sites

// ==> 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
Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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 !!! ;)

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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 !

Lien vers le commentaire
Partager sur d’autres sites

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 :)

Lien vers le commentaire
Partager sur d’autres sites

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 !!

Lien vers le commentaire
Partager sur d’autres sites

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...