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)
Voici maintenant ma Classe MachineDAO qui hérite de DAOBase (C'est la plus petite, mais elle montre quelques fonctionnalités )
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; } }
(Elle comporte deux colonnes : ID et Marque)
A chaque DAO, il faut associer une Classe (qui contiendra les données à ajouter dans ta base)
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; } }
Ma classe Machine
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
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; } }
Pour résumer :
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);
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
Partager