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 :

ajouter des données dans une base SQL Lite


Sujet :

Android

  1. #21
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2014
    Messages : 16
    Points : 17
    Points
    17
    Par défaut
    Salut

    Je bosse actuellement sur une Database, je vais t'indiquer comment j'ai procédé. Libre à toi de t'en servir ou pas

    Lors de mes études, on m'a fortement incité à passer par des DAO (Data Acces Object) pour gérer la communication entre la Database et l'utilisateur.

    Voici ma DAOBase (qui correspond à ta GestionBD, ATTENTION : Elle doit être abstract)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    package DAO;
     
    import DataBase.DataBasePAB;
    import android.content.Context;
    import android.database.SQLException;
    import android.database.sqlite.SQLiteDatabase;
     
    /**
     * DAO permettant de gérer la connexion avec la database,
     * Javadoc OK
     * @author Damien RAMA
     * @version 1.0
     */
     
    public abstract class DAOBase 
    {
    	/***** Variables contenant la version et le nom de la database *****/
    	protected final static int VERSION = 13;
      	protected final static String NOM = "database.db";
     
      	/***** Variables contenant une instance de la Database et son Handler permettant d'interagir avec *****/
      	protected SQLiteDatabase database = null;
      	protected DataBasePAB handler = null;
     
      	/**
             * Permettant de donner à la database son context
             * @param pContext : Context de l'activité dans laquelle on travaille
             */
      	public DAOBase(Context pContext) 
      	{
      		this.handler = new DataBasePAB(pContext, NOM, null, VERSION);
      	}
     
      	/**
             * Permet d'ouvrir l'accès à la database
             * @throws SQLException : Exception en cas d'erreur avec la database
             */
      	public void open() throws SQLException
      	{
      		database = handler.getWritableDatabase();
      	}
     
      	/**
             * Permet de fermer la connexion avec la database
             */
      	public void close() 
      	{
      		handler.close();
      	}
     
      	/**
             * Permet de récupérer la database
             * @return database : La base de données sur laquelle on travaille
             */
      	public SQLiteDatabase getDb() 
      	{
      		return database;
      	}
    }
    Voici maintenant ma Classe MachineDAO qui hérite de DAOBase (C'est la plus petite, mais elle montre quelques fonctionnalités )
    (Elle comporte deux colonnes : ID et Marque)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
     
    package DAO;
     
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Locale;
     
    import DataBase.DataBasePAB;
    import DataBase.Machine;
    import android.content.ContentValues;
    import android.content.Context;
    import android.database.Cursor;
     
    /**
     * Extention de la DAOBase pour les interractions avec la table Machine,
     * Javadoc OK
     * @author Damien RAMA
     * @version 1.0
     */
     
    public class MachineDAO extends DAOBase
    {
    	/**
             * Constructeur de la classe
             * @param pContext : Context de l'activité
             */
    	public MachineDAO(Context pContext) 
    	{
    		super(pContext);
    	}
     
    	/**
             * Permet de récupérer les noms des colonnes de la table
             * @return Liste contenant les noms des colonnes
             */
    	public List<String> getColumnName()
    	{
    		/***** Création de la liste *****/
    		List<String> laListe = new ArrayList<String>();
     
    		/***** Curseur permettant de faire une requête *****/
    		Cursor c = database.rawQuery("select * from machine", null);
     
    		/***** Ajout des noms de colonnes à la liste *****/
    		for(int i = 0; i < c.getColumnCount(); i++)
    		{
    			laListe.add(c.getColumnName(i));
    		}		
    		return laListe;
    	}
     
    	/**
             * Permet de supprimer le contenu de la table   
             */
    	public void supprimerAll()
    	{
    		/***** Supprime le contenu de la table Machine *****/
    		database.delete(DataBasePAB.TABLE_MACHINE_NOM, null, null);
    	}	
     
    	/**
             * Permet d'insérer une machine dans la table
             * @param m : Classe Machine à ajouter
             * @return 0 si erreur, idMachine si réussite
             */
    	public long insererMachine(Machine m)
    	{
    		/***** Création de la variable de retour *****/
    		long result = 0;
     
    		/***** Curseur permettant de faire la requête de selection afin de voir si la machine est déjà existante ou non *****/
    		Cursor c = database.rawQuery("select * from machine where marque = ?", new String[]{m.getMarque().toUpperCase(Locale.getDefault())});
     
    		/***** Si la machine existe *****/
    		if(c.getCount() >= 1)
    		{
    			/***** Création de la variable permettant le retour de son ID *****/
    			long idMachine = 0;
    			while(c.moveToNext())
    			{
    				idMachine = c.getLong(0);
    			}
    			result = idMachine;
    		}
    		/***** Si elle n'existe pas *****/
    		else
    		{
    			/***** On récupère l'ID le plus élevé de la table *****/
    			c = database.rawQuery("select * from machine", null);
     
    			/***** On rajoute 1 au resultat *****/
    			result = c.getCount()+1;
     
    			/***** On créer une variable qui contiendra les valeurs à ajouter *****/
    			ContentValues value = new ContentValues();
    			value.put(DataBasePAB.MACHINE_CLE, result);
    			value.put(DataBasePAB.MACHINE_MARQUE, m.getMarque().toUpperCase(Locale.getDefault()));
     
    			/***** On insère la Machine dans la table *****/
    			database.insert(DataBasePAB.TABLE_MACHINE_NOM, null, value);
    		}
     
    		/***** On ferme le curseur *****/
    		c.close();
     
    		/***** On retourne l'ID de la machine *****/
    		return result;
    	}
     
    	/**
             * Permet de récupérer la liste des machines présentes dans la table
             * @return liste des machines de la table
             */
    	public List<Machine> getListeMachine()
    	{
    		/***** Création de la liste qui sera retourné à la fin de la requête *****/
    		List<Machine> laListeMachine =  new ArrayList<Machine>();
     
    		/***** Création du curseur qui selectionnera toutes les machines *****/
    		Cursor c = database.rawQuery("select * from machine;", null);
     
    		/***** Si la table n'est pas vide *****/
    		if(c != null && c.getCount() != 0)
    		{
    			/***** On récupère chaque Machine *****/
    			while(c.moveToNext())
    			{
    				/***** On insère chaque machine dans la liste *****/
    				Machine m = new Machine(c.getLong(0), c.getString(1));
    				laListeMachine.add(m);
    			}
    		}
    		/***** On ferme le curseur *****/
    		c.close();
     
    		/***** On retourne la liste *****/
    		return laListeMachine;		
    	}
    }
    A chaque DAO, il faut associer une Classe (qui contiendra les données à ajouter dans ta base)

    Ma classe Machine

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
    package DataBase;
     
    /**
     * Classe permettant d'enregistrer des machines (et d'intéragir sans la database),
     * Javadoc OK
     * @author Damien RAMA
     * @version 1.0
     */
    public class Machine 
    {
    	/***** Attributs de la classe Machine *****/
    	private long id;
    	private String marque;
     
    	/**
             * Constructeur de la classe
             * @param id : ID de la machine
             * @param marque : Marque de la machine
             */
    	public Machine(long id, String marque) 
    	{
    		super();
    		this.id = id;
    		this.marque = marque;
    	}
     
    	/**
             * Constructeur par defaut de la classe
             */
    	public Machine()
    	{
    		super();
    	}
     
    	/**
             * Permet de récupérer l'ID de la machine
             * @return id de la machine
             */
    	public long getId() 
    	{
    		return id;
    	}
     
    	/**
             * Permet de définir l'ID de la machine
             * @param id : ID de la machine
             */
    	public void setId(long id) 
    	{
    		this.id = id;
    	}
     
    	/**
             * Permet de récupérer la marque de la machine
             * @return marque de la machine
             */
    	public String getMarque() 
    	{
    		return marque;
    	}
     
    	/**
             * Permet de définir la marque de la machine
             * @param marque : Marque de la machine
             */
    	public void setMarque(String marque) 
    	{
    		this.marque = marque;
    	}
    }
    Et enfin, un code simple permettant d'ajouter une Machine dans ma base

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
         MachineDAO machineDAO = new MachineDAO(this);
         machineDAO.open();
         Machine laMachine = new Machine(1, "SCHWING");
         machineDAO.insererMachine(laMachine);
    Pour résumer :

    Dans mon cas, je créé une instance de Machine avec les attributs nécessaires.
    Ensuite je créé une instance de MachineDAO, que j'initialise et que j'ouvre.
    Ensuite j'appelle la méthode InsererMachine(...) qui va (si le code est bon) ajouter une machine dans ma base.

    Normalement, ça fonctionne ^^

    En espérant t'avoir été utile.

    Danck

  2. #22
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    Je vais regarder mais je suis obligé d'utiliser ce que j'ai fait, c'est un cas du site du Certa. Mon problème c'est que je ne vois pas de ou peut venir l'erreur, je n'est pas d'exception ni de message d'erreur

  3. #23
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2014
    Messages : 16
    Points : 17
    Points
    17
    Par défaut
    D'accord tien moi au jus

    Par contre, je te conseille vivement le DAOBase (Abstract) et les classes DAO pour chaque table de ta base de données (héritant de DAOBase). Normalement, ça fonctionne parfaitement comme ça

  4. #24
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    Ok
    sinon tu vois de ou peut venir le problème

  5. #25
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2014
    Messages : 16
    Points : 17
    Points
    17
    Par défaut
    Pas vraiment malheurement.. :/

  6. #26
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    J'ai tout essayé et je ne vois pas du tout où est l'erreur

  7. #27
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Il y a beaucoup d'endroit ou les exceptions sont passées sous silence....

    Les "catch (blabla ex) { return false; }" par exemple.
    Avant le return, faire un log de l'exception permettrait de savoir ce qu'il se passe !
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  8. #28
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    Oui mais je ne vois pas ou les mettre tes try / catch

  9. #29
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2014
    Messages : 16
    Points : 17
    Points
    17
    Par défaut
    Nicroman t'indique juste que DANS ton code actuel, certain "Try/Catch" sont passés sous silence avec "return false".

    Par exemple dans ta classe Lithttp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
                   catch (MalformedURLException e) {
    			return false;                                //ICI
    		} catch (IOException e) {
    			return false;                                //ICI
    		} catch (ParserConfigurationException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (SAXException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}

  10. #30
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    D'accord mais cette classe pose pas problème puisse j'arrive à lire le fichier.
    La preuve il me retourne bien le contenu du fichier dans le log http
    c'est l'insertion dans la base qui ne se fait pas

  11. #31
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    Personne pour m'aide? Sa devient très urgent là

  12. #32
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    Personne peut m'aider?

  13. #33
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    Personne peut m'aider? C'est très urgent là

  14. #34
    Traductrice
    Avatar de Mishulyna
    Femme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 504
    Points : 7 840
    Points
    7 840
    Par défaut
    Bonjour,

    Le code des classes a peut-être changé, mais:
    - je ne vois pas de champs "id" dans Livraison
    - je ne vois pas de champs "id" dans Colis, il y a "idLivraison" mais pas de méthode setIdLivraison().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    public void init(){
    		open();
     
    		MaSaxHandler mesLivraisons = new MaSaxHandler();
     
                    if(mesLivraisons != null){
    			try{
    				for (Livraison l : mesLivraisons.getLesLivraisons()){
    					Livraison livraisonACreer = new Livraison(); 
    					livraisonACreer.setClient(l.getClient());
    					livraisonACreer.setAdresse(l.getAdresse());
                                            long id;
    					id = ajouteLivraison(livraisonACreer);
    					System.out.println("idLivraison = " + id); // TEST
     
    					List<Colis> listeColis = l.getLesColis();
    					for (Colis c : listeColis){
    						Colis colisACreer = new Colis();
    						colisACreer.setId(id); // ce ne devrait pas être setIdLivraison()? 
    						colisACreer.setRef(c.getRef());
    						colisACreer.setMontant(c.getMontant());
    						ajouteColis(colisACreer); 
    						System.out.println("Colis ajouté à la livraison numéro " + id + "= " + colisACreer.toString()); // TEST
    					}
    				}
    			}
    			catch(Exception e){
    				e.printStackTrace(); 
    			}
    		} else System.out.println("La liste est null!");
    	}
    Chaque fois que tu dis "je ne peux pas", n'oublie pas d'ajouter le mot "encore".

  15. #35
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    J'ai rien qui s'affiche dans ma console

  16. #36
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    Je vois pas du tout ou sa bloque

  17. #37
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    Je pense que c'est là que sa bloque:
    Il ne me récupère pas mes livraison:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    MaSaxHandler mesLivraisons = new MaSaxHandler();
     
                    try{
    					for (Livraison l : mesLivraisons.getLesLivraisons()){
    En revanche j'arrive bien à lire le fichier puisque j'arrive à afficher les livraisons mais elle ne sont pas dans la base

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [Débutant] Ajouter des données dans une base de données asp.net
    Par pemco dans le forum ASP.NET
    Réponses: 5
    Dernier message: 15/08/2013, 10h05
  2. [Débutant] Enregistrer des données dans une base sql server CE
    Par hugnka dans le forum VB.NET
    Réponses: 11
    Dernier message: 18/12/2012, 15h47
  3. Réponses: 4
    Dernier message: 11/03/2011, 14h45
  4. ajouter des données dans une base de données
    Par khallou2007 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 01/07/2009, 15h05

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