IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

La meilleure solution pour SQLite Android


Sujet :

Android

  1. #1
    Membre régulier
    Homme Profil pro
    ETUDIANT
    Inscrit en
    Novembre 2012
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : ETUDIANT

    Informations forums :
    Inscription : Novembre 2012
    Messages : 111
    Points : 70
    Points
    70
    Par défaut La meilleure solution pour SQLite Android
    Bonjour ,

    Je suis entrain de développer une application de gestion des opérations,donc j'ai créer une base de donnée operations_general.db et une autre operation_temp.db

    - operations_general.db: un tableau de 8 colonnes (8 variables)

    Main.activity :

    - 8 edittext
    -bouton 'sauvegarder'--> insert in operations_general.db et operation_temp.db
    -ListView :pour afficher la base de donnée operation_temp.db.

    -Donc chaque mois je dois sauvegarder ma base de donnée (ex : mars-2013.db)et créer un rapport pdf (pas de problème).

    -pour commencer un nouveau mois je dois vider ma operation_temp.db(deleteall) (pas de problème)

    Le problème c'est avec le temps (ex après 2 ans ), ma base de donnée operations_general.db ,y aura plusieurs lignes .
    Questions:

    1-Donc c'est quoi le maximum de ligne de operations_general.db ??
    2-Est ce que c'est une bonne solution que j'ai proposer (deux base de donnée (general et temp)

    Joyeux Noël mes amis

    Merci d'avance

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Donc c'est quoi le maximum de ligne de operations_general.db
    Si on parle d'autoincrément la limite c'est 9223372036854775807 après quoi l'autoincrément commenceà utiliser des nombres libre.
    Autant dire que même avec une insertion par seconde le soleil à le temps de mourir avant que tu arrives au bout

    http://www.sqlite.org/autoinc.html

    Sinon y'a aucune limite si ce n'est l'espace de stockage disponible.

    Est ce que c'est une bonne solution que j'ai proposer (deux base de donnée (general et temp)
    Pas compris quel était le but de la base temporaire. Si c'est pour faire une sauvegarde mensuelle ca ne sert à rien. Chaque opération doit être datée , tu dois donc pouvoir extraire toutes les opérations d'un mois pour en faire une backup le moment voulu.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre régulier
    Homme Profil pro
    ETUDIANT
    Inscrit en
    Novembre 2012
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : ETUDIANT

    Informations forums :
    Inscription : Novembre 2012
    Messages : 111
    Points : 70
    Points
    70
    Par défaut re
    Rebonjour ,

    Merci pour ta réponse rapide ,

    Donc si j'ai une seule base de donnée operation.db

    ex:
    -le Mois janvier : 300 lignes -- > qui sera afficher dont listVieuw(main activity)

    bouton save --> ok(300 lignes)

    -le Mois fev: boutton nouveau mois ,je dois vider listview (seulement pour le mois fev , mais ici j 'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    String[] from = new String[]{cl_fr_DB.KEY_CONTENT20,cl_fr_DB.KEY_CONTENT21,cl_fr_DB.KEY_CONTENT22,cl_fr_DB.KEY_CONTENT23,cl_fr_DB.KEY_CONTENT24};
     int[] to = new int[]{R.id.text1, R.id.text2,R.id.text3,R.id.text4,R.id.text5};
     SimpleCursorAdapter cursorAdapter = new SimpleCursorAdapter(this, R.layout.row, cursor_fourcl, from, to);
     lv1.setAdapter(cursorAdapter);
    -ma base de donnée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public Cursor queueAll_fourcl(){
    String[] columns = new String[]
    		{KEY_ID_DATA,KEY_CONTENT20,KEY_CONTENT21,KEY_CONTENT22,KEY_CONTENT23,KEY_CONTENT24,KEY_CONTENT25
    		};
    Cursor cursor = sqLiteDatabase.query(FOUR_CLIENT, columns, null, null, null, null, null);
    return cursor;
    }
    -Comment faire afficher seulement le mois du sytéme (date du tablet) dans listView

    Merci d'avance

  4. #4
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Tu fais simplement une requête SQL en limitant la sélection sur la date en cours pour ne retourner que les lignes du mois :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM `table_name` WHERE strftime('%m', `date_column`) = '12'
    Il faut justeque tu ai un champs avec la date dans le bon format pour chaque ligne.

    PS : La balise code (#) et l'indentation du code c'est pas du luxe
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre régulier
    Homme Profil pro
    ETUDIANT
    Inscrit en
    Novembre 2012
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : ETUDIANT

    Informations forums :
    Inscription : Novembre 2012
    Messages : 111
    Points : 70
    Points
    70
    Par défaut re
    Merci,mais j'ai pense a ceci :

    comme j'ai une une seule base de donnée :

    ex = janvier : 50 lignes insérer .
    févier : 40 lignes insérer .
    Donc ma base de donnée : 90 lignes insérer .

    Base de donnée:

    DB.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     private static final String FOURCL_CREATE_DATABASE ="create table " + FOUR_CLIENT + " ("
    			+ KEY_ID_DATA + " integer primary key , "
    			+ KEY_CONTENT20 + " date,"
    			+ KEY_CONTENT21 + " TEXT NOT NULL,"
    			+ KEY_CONTENT22 + " double,"
    			+ KEY_CONTENT23 + " double,"
    			+ KEY_CONTENT24 + " TEXT NOT NULL,"
    		    + KEY_CONTENT25 + " TEXT NOT NULL);";
     
    ......
    ....
     
     
    date :KEY_CONTENT20
    main.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     date   =       (EditText) findViewById(R.id.date);
    .....
    date.setText(new SimpleDateFormat("dd-MMM-yyyy", Locale.FRANCE).format(Calendar.getInstance().getTime()));
     
     
    // insertion (date.getText().toString())
     
    my_operations.insert_four_cl(date.getText().toString(),
         		                  String.valueOf(name.getText().toString()),
     			                  price_allo,
     			                  price_client,
     			                  traitements.moyen_de_paiement[mode_paiement.getSelectedItemPosition()],
     			                  String.valueOf(comm.getText().toString()));

    Donc j'ai creer deux spinner : mois janv,fev,mars...) (meme format date systeme et annee (2013 2014 ....)

    valider pour ok (ex:janv 2013)

    listView(lv1) afficher seulement pour le mois janvier ,j’appelle la fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     String[] from = new String[]{cl_fr_DB.KEY_CONTENT20,cl_fr_DB.KEY_CONTENT21,cl_fr_DB.KEY_CONTENT22,cl_fr_DB.KEY_CONTENT23,cl_fr_DB.KEY_CONTENT24};
     int[] to = new int[]{R.id.text1, R.id.text2,R.id.text3,R.id.text4,R.id.text5}; 
     
    SimpleCursorAdapter cursorAdapter = new SimpleCursorAdapter(this, R.layout.row,cursor_fourcl, from, to);
     lv1.setAdapter(cursorAdapter);
    mon soucis c'est au niveau du cursor_fourcl.comment le définir a la base de donnée
    j'ai deja essai ce ci B.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public Cursor cursor_fourcl(mois) { 
    	Cursor mCursor = 	
    	sqLiteDatabase.rawQuery("SELECT * FROM FOUR_CLIENT WHERE KEY_CONTENT20 = ?;", new String[]{mois});
     
         return mCursor;
    }
    erreur de syntaxes !!,en plus je veux mois AND année

    merci d'avance





    //sqLiteDatabase.rawQuery("SELECT * FROM FOUR_CLIENT WHERE );
    }

  6. #6
    Membre régulier
    Homme Profil pro
    ETUDIANT
    Inscrit en
    Novembre 2012
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : ETUDIANT

    Informations forums :
    Inscription : Novembre 2012
    Messages : 111
    Points : 70
    Points
    70
    Par défaut
    bonsoir,

    merci Olivier ,le problème est résolu:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public Cursor mois(String mois)
    { 
     String[] columns = new String[]{
    		 KEY_ID_DATA,KEY_CONTENT20,KEY_CONTENT200,KEY_CONTENT21,KEY_CONTENT22,KEY_CONTENT23,KEY_CONTENT24,KEY_CONTENT25
    			};
     Cursor mCursor = sqLiteDatabase.query(FOUR_CLIENT, columns, KEY_CONTENT20  + "= ?" ,
     new String[]{mois}, null, null,  KEY_CONTENT200 + " ASC");
     return mCursor;
     
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. meilleure solution pour faire un jeu educatif sous android
    Par Electwonik dans le forum Général Java
    Réponses: 2
    Dernier message: 17/01/2014, 14h59
  2. [eCommerce] Meilleure solution pour ecommerce
    Par llax dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 23/12/2005, 21h03
  3. meilleure solution pour implementation
    Par shirya dans le forum C++
    Réponses: 2
    Dernier message: 20/12/2005, 21h46
  4. meilleur solution pour créer un document imprimable???
    Par martimacfly dans le forum XML/XSL et SOAP
    Réponses: 26
    Dernier message: 08/07/2004, 10h09
  5. [Conception] Meilleures solutions pour gérer le multilangage
    Par scorpiwolf dans le forum Général Java
    Réponses: 3
    Dernier message: 06/07/2004, 16h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo