1 Denis Brunet Saliha Yacoub
SQLite et Android SQLite
SQLite est un moteur de bases de donneacutees libre qui impleacutemente la plus part des fonctionnaliteacutes
du SQL92(standard) SQLite utilise donc la plus part des commandes SQL (CREATE INSERT
UPDATE DELETE et SELECT)
SQLite ne neacutecessite pas de serveur de bases de donneacutees pour fonctionner Vous pouvez
teacuteleacutecharger la derniegravere version de SQLite agrave httpswwwsqliteorgdownloadhtml
Types de donneacutees SQLite nrsquoaccepte que 5 types de donneacutees
Type Deacutefinition
NULL Valeur vide
INTEGER Entier signeacute
REAL Nombre reacuteel
TEXT VARCHAR
Champ texte
BLOB Champ binaire (image)
Vous pouvez utiliser SQLite pour vos projets qui utilisent une base de donneacutees locale Il suffit de
teacuteleacutecharger la dll SQLite3 La creacuteation de la BD pourra se faire par lrsquoinvite commandes ou en
teacuteleacutechargeant (et installant) lrsquooutil SQLiteBrowser Les accegraves agrave la BD SQlite peuvent se faire par
JAVA C et Android etchellip
Pour utiliser SQLite avec Android vous nrsquoavez pas besoins de teacuteleacutecharger et drsquoexeacutecuter quoi que
ce soit puisque ce moteur de bases de donneacutees vient avec Android Il vous suffit drsquoutiliser les
classes neacutecessaires drsquoAndroid pour creacuteer et manipuler une base de donneacutees SQLite
Pour la version pc vous pouvez creacuteer la BD de deux faccedilons
Par lrsquoinvite de commande
open Nombd ouvre une base de donneacutees existante ou creacuteer une base de donneacutee si celle-ci
nrsquoexiste pas (Remarquez le point devant open)
2 Denis Brunet Saliha Yacoub
Vous pouvez encore plus facile teacuteleacutecharger et installer SqliteBrowser agrave lrsquoadresse
httpsqlitebrowserorg pour creacuteer et geacuterer vos base de donneacutees SQLite
Par lrsquoonglet Nouvelle base de donneacutees vous pouvez creacuteer votre base de donneacutees et creacuteer et
geacuterer vos tables
3 Denis Brunet Saliha Yacoub
4 Denis Brunet Saliha Yacoub
JDBC et SQlite Voir le cours laquoJdbc en Brefraquo Par le menu Fichier Project Structure agrave lrsquoonglet Libraire Ajouter
5 Denis Brunet Saliha Yacoub
SQLite sur Android
Deux meacutethodes populaires pour acceacuteder et exploiter agrave une base de donneacutees SQLite
avec Android Une qui utilise surtout la classe SQLiteDatabase (proche de la bd) et celle
qui utilise la classe SQLiteOpenHelper et SQLiteDatabase (proche de la prog)
La meacutethode qui sera deacutetailleacutee ici est celle qui utilise la classe SQLiteDatabase
La classe SQLiteDatabase a des meacutethodes qui permettent de faire une gestion complegravete
drsquoune base de donneacutees SQLite sur appareils mobiles Android
Voici quelques meacutethodes de cette classe
Meacutethodes Rocircle
execSQL(String sql Object[] bindArgs) Execute une instruction SQL qui nrsquoest pas un SELECT
rawQuery(String sql String[] selectionArgs)
Execute une requecircte SQL de type SELECT et retourne un ensemble de reacutesultat dans un curseur CURSOR
openOrCreateDatabase(String name int mode CursorFactory factory)
Retourne un SQLiteDatabe Les paramegravetres sont nom pour la base de donneacutees Il Peut ecirctre null Le Context Mode ici (Context MODE_PRIVATE) qui veut dire que seule votre activiteacute a droit drsquoy acceacuteder Crsquoest le mode par deacutefaut
Les curseurs sont des variables (zone meacutemoire) utiliseacutees pour reacutecupeacuterer le reacutesultat de requecirctes de type SELECT Les curseurs sont des objets qui contiennent les reacutesultats dune recherche dans une base de donneacutees Ce sont en fait des objets qui fonctionnent comme les tableaux Ils contiennent les colonnes et lignes qui ont eacuteteacute renvoyeacutees par la requecircte On y accegravede ligne par ligne puis colonne par colonne
Un objet de type Curseur possegravede un pointeur sur lrsquoenregistrement courant Agrave la
reacuteception de cet objet le pointeur se trouve devant le premier enregistrement
6 Denis Brunet Saliha Yacoub
Voici quelques meacutethodes de lrsquoobjet Curseur
Pour vous deacuteplacer entre les enregistrements vous pouvez utiliser les meacutethodes
moveToFirst () et moveToNext () (MoveToPrevious() et moveToLast() pour une
lecture inverse)
La meacutethode isAfterLast() permet de veacuterifier si la fin du reacutesultat de la requecircte a eacuteteacute
atteint
getCount() permet drsquoobtenir le nombre drsquoenregistrements de la requecircte
Cursor fournit les meacutethodes get () par exemple getLong (columnIndex) getString
(columnIndex) pour acceacuteder aux donneacutees de lrsquoenregistrement courant Le
columnIndex est lrsquoindex de la colonne agrave acceacuteder
Cursor fournit eacutegalement la meacutethode getColumnIndexOrThrow (String) qui permet
dobtenir lindex de colonne pour un nom de colonne de la table
Un curseur doit ecirctre fermeacute avec la meacutethode close()
Exemple drsquoapplication utilisant SQLite et Android
7 Denis Brunet Saliha Yacoub
Contenu du fichier activity_mainxml
ltxml version=10 encoding=utf-8gt
ltRelativeLayout xmlnsandroid=httpschemasandroidcomapkresandroid
androidid=+idmyLayout
androidstretchColumns=0
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
8 Denis Brunet Saliha Yacoub
ltTableLayout
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltTextView androidtext=Gestion des joueurs
androidlayout_column=1
androidlayout_width=wrap_content
androidlayout_height=wrap_content
gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltTextView androidtext=stringNum
androidlayout_column=1
androidlayout_width=wrap_content
androidlayout_height=wrap_content
gt
ltEditText androidid=+idedtNum
androidinputType=number
androidlayout_column=2
androidlayout_width=150dp
androidlayout_height=40dp
gt
ltTableRowgt
9 Denis Brunet Saliha Yacoub
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltTextView androidtext=stringnom
androidlayout_column=1
androidlayout_width=wrap_content
androidlayout_height=wrap_content
gt
ltEditText androidid=+idedtNom
androidinputType=text
androidlayout_column=2
androidlayout_width=150dp
androidlayout_height=40dp
gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltTextView androidtext=stringprenom
androidlayout_column=1
androidlayout_width=wrap_content
androidlayout_height=wrap_content
gt
ltEditText androidid=+idedtPrenom
androidinputType=text
10 Denis Brunet Saliha Yacoub
androidlayout_column=2
androidlayout_width=150dp
androidlayout_height=40dp
gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltButton androidid=+idbtnAjouter
androidtext=stringajouter
androidlayout_column=1
androidlayout_width=100dp
androidlayout_height=40dp
gt
ltButton androidid=+idbtnSupprimer
androidtext=stringsupprimer
androidlayout_column=2
androidlayout_width=100dp
androidlayout_height=40dp
androidlayout_centerVertical=true
gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltButton androidid=+idbtnAfficher
11 Denis Brunet Saliha Yacoub
androidtext=stringafficher
androidlayout_column=1
androidlayout_width=100dp
androidlayout_height=40dp
gt
ltButton androidid=+idbtnAffichertout
androidtext=stringaffichertout
androidlayout_width=100dp
androidlayout_height=40dp
androidlayout_column=2 gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltButton androidid=+idbtnSuivant
androidtext=stringsuivant
androidlayout_column=1
androidlayout_width=100dp
androidlayout_height=40dp
gt
ltButton androidid=+idbtnPrcedent
androidtext=stringprecedent
androidlayout_width=100dp
androidlayout_height=40dp
androidlayout_column=2 gt
ltTableRowgt
12 Denis Brunet Saliha Yacoub
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltButton androidid=+idbtnPremier
androidtext=stringpremier
androidlayout_column=1
androidlayout_width=100dp
androidlayout_height=40dp
gt
ltTableRowgt
ltTableLayoutgt
ltRelativeLayoutgt
Contenu du fichier stringsxml
ltresourcesgt
ltstring name=app_namegtSqliteExempleltstringgt
ltstring name=NumgtNumeacutero ltstringgt
ltstring name=nomgtNom ltstringgt
ltstring name=prenomgtPrenom ltstringgt
ltstring name =ajoutergt Ajouterltstringgt
ltstring name =supprimergt Supprimerltstringgt
ltstring name =affichergt Afficherltstringgt
ltstring name =affichertoutgt ToutAfficherltstringgt
ltstring name =suivantgt Suivantltstringgt
ltstring name =precedentgt Precedentltstringgt
ltstring name =premiergt Premierltstringgt
ltresourcesgt
13 Denis Brunet Saliha Yacoub
Contenu MainActivityjava
package comexamplesalihayacoubsqliteexemple
import androidappActivity
import androidappAlertDialogBuilder
import androidcontentContext
import androiddatabaseCursor
import androiddatabasesqliteSQLiteDatabase
import androidosBundle
import androidviewView
import androidviewViewOnClickListener
import androidwidgetButton
import androidwidgetEditText
public class MainActivity extends Activity implements OnClickListener
Deacuteclarations
EditText edtNom edtPrenom edtNum
Button btnAfficher btnSupprimer btnAjouter btnAffichertout
Button btnSuivant btnPrcedent btnPremier
SQLiteDatabase bd
Cursor c1 utiliseacute par les boutons suivant et preacuteceacutedent
Override
public void onCreate(Bundle savedInstanceState)
superonCreate(savedInstanceState)
setContentView(Rlayoutactivity_main)
14 Denis Brunet Saliha Yacoub
edtNom = (EditText) findViewById(RidedtNom)
edtPrenom = (EditText) findViewById(RidedtPrenom)
edtNum = (EditText) findViewById(RidedtNum)
btnAjouter = (Button) findViewById(RidbtnAjouter)
btnSupprimer = (Button) findViewById(RidbtnSupprimer)
btnAfficher = (Button) findViewById(RidbtnAfficher)
btnAffichertout = (Button) findViewById(RidbtnAffichertout)
btnSuivant =(Button)findViewById(RidbtnSuivant)
btnPrecdent =(Button)findViewById(RidbtnPrcedent)
btnPremier =(Button)findViewById(RidbtnPremier)
btnAjoutersetOnClickListener(this)
btnSupprimersetOnClickListener(this)
btnAffichertoutsetOnClickListener(this)
btnSupprimersetOnClickListener(this)
btnAffichersetOnClickListener(this)
btnSuivantsetOnClickListener(this)
btnPrecdentsetOnClickListener(this)
btnPremiersetOnClickListener(this)
bd = openOrCreateDatabase(GestionJoueurs ContextMODE_PRIVATEnull)
bdexecSQL(CREATE TABLE IF NOT EXISTS Joueurs(num integer primary key autoincrement
nom VARCHARprenom VARCHAR))
public void onClick(View view)
15 Denis Brunet Saliha Yacoub
if(view==btnAjouter)
if(edtNomgetText()toString()trim()length()==0||
edtPrenomgetText()toString()trim()length()==0)
AfficheMessage(Erreur Entrer toutes les valeurs)
return
bdexecSQL(INSERT INTO joueurs(nomprenom) VALUES( + edtNomgetText() +
+ edtPrenomgetText() + ))
AfficheMessage(Succegraves Information ajouter)
videTexte()
fin bouton ajouter
---------------DeacutebutAfficher TOUT
if(view==btnAffichertout)
Cursor c=bdrawQuery(SELECT FROM Joueursnull)
if(cgetCount()==0)
AfficheMessage(Erreur Aucune donneacutee)
return
StringBuffer buffer=new StringBuffer()
while(cmoveToNext())
bufferappend(Numeacutero +cgetInt(0)+n)
bufferappend(Non +cgetString(1)+n)
bufferappend(Preacutenom +cgetString(2)+n)
16 Denis Brunet Saliha Yacoub
cclose()
AfficheMessage(Les joueurs buffertoString())
----fin afficher tout
Bouton supprimer
if(view==btnSupprimer)
if(edtNumgetText()toString()trim()length()==0)
AfficheMessage(Erreur Entrer un numeacutero de joueur)
return
Cursor c=bdrawQuery(SELECT FROM Joueurs WHERE num=+ edtNumgetText() null)
if(cmoveToFirst())
bdexecSQL(DELETE FROM Joueurs WHERE num= + edtNumgetText() )
AfficheMessage(Succegraves Information deacutetruite)
else
AfficheMessage(Erreur Numeacutero invalide)
videTexte()
fin supprimer
17 Denis Brunet Saliha Yacoub
Bouton afficher le premier
if(view==btnPremier)
try
c1 = bdrawQuery(SELECT FROM Joueurs null)
if (c1getCount() == 0)
AfficheMessage(Erreur Aucune donneacutee)
return
if(c1moveToFirst())
edtNomsetText(c1getString(1))
dtPrenomsetText(c1getString(2))
fin du try
catch(Exception se)
ToastmakeText(MainActivitythis message+ segetMessage()toString()
ToastLENGTH_LONG)show()
Fin du premier
bouton suivant
if(view ==btnSuivant)
if(c1moveToNext())
edtNomsetText(c1getString(1))
edtPrenomsetText(c1getString(2))
18 Denis Brunet Saliha Yacoub
bouton preacutecedent
if(view ==btnPrecdent)
if(c1moveToPrevious())
edtNomsetText(c1getString(1))
edtPrenomsetText(c1getString(2))
fin preacutecedent
Bouton afficher un Enregistrement
if(view==btnAfficher)
Cursor c = bdrawQuery(SELECT FROM Joueurs where num= + edtNumgetText()
null)
if (cgetCount() == 0)
AfficheMessage(Erreur Aucune donneacutee)
return
if(cmoveToFirst())
edtNomsetText(cgetString(1))
edtPrenomsetText(cgetString(2))
fin Afficher
Fin du onClick
19 Denis Brunet Saliha Yacoub
public void AfficheMessage(String titreString message)
Builder builder=new Builder(this)
buildersetCancelable(true)
buildersetTitle(titre)
buildersetMessage(message)
buildershow()
public void videTexte()
edtNumsetText()
edtNomsetText()
edtPrenomsetText()
fin
Sources
httpswwwsqliteorgquickstarthtml
Notes de cours de Denis Brunet
httpdeveloperandroidcomreferenceandroiddatabasesqliteSQLiteDatabasehtml
httpdeveloperandroidcomreferenceandroidcontentContexthtml
httpsopenclassroomscomcoursescreez-des-applications-pour-android
httpwwwuniv-orleansfrlifoMembersJean-FrancoisLalandeenseignementandroidcours-
androidpdf
20 Denis Brunet Saliha Yacoub
Travail final Partie 2
Pondeacuteration 8
Date de remise le 19 mai avant 16h10
1- Directement sur votre teacuteleacutephonetablette creacuteer la table circuits suivantes en utilisant
SQLite
Colonnes Types et contrainte
IdCircuit integer primary key autoincrement
VilleDepart Varchar
VilleArivee Varchar
Prix REAL
Duree integer
2- Creacuteer lrsquoapplication JDBC-Android qui permet
a Creacuteer la base de donneacutees
b Drsquoajouter un enregistrement
c De supprimer un enregistrement
d Rechercher un circuit selon la ville de deacutepart Srsquoil y a plusieurs circuits on doit
pouvoir se deacuteplacer drsquoun enregistrement agrave lrsquoautre par des boutons suivant et
preacutecedent
Important Le cours sur SQLite et Android sera preacutesenteacute le lundi 09 mai
2 Denis Brunet Saliha Yacoub
Vous pouvez encore plus facile teacuteleacutecharger et installer SqliteBrowser agrave lrsquoadresse
httpsqlitebrowserorg pour creacuteer et geacuterer vos base de donneacutees SQLite
Par lrsquoonglet Nouvelle base de donneacutees vous pouvez creacuteer votre base de donneacutees et creacuteer et
geacuterer vos tables
3 Denis Brunet Saliha Yacoub
4 Denis Brunet Saliha Yacoub
JDBC et SQlite Voir le cours laquoJdbc en Brefraquo Par le menu Fichier Project Structure agrave lrsquoonglet Libraire Ajouter
5 Denis Brunet Saliha Yacoub
SQLite sur Android
Deux meacutethodes populaires pour acceacuteder et exploiter agrave une base de donneacutees SQLite
avec Android Une qui utilise surtout la classe SQLiteDatabase (proche de la bd) et celle
qui utilise la classe SQLiteOpenHelper et SQLiteDatabase (proche de la prog)
La meacutethode qui sera deacutetailleacutee ici est celle qui utilise la classe SQLiteDatabase
La classe SQLiteDatabase a des meacutethodes qui permettent de faire une gestion complegravete
drsquoune base de donneacutees SQLite sur appareils mobiles Android
Voici quelques meacutethodes de cette classe
Meacutethodes Rocircle
execSQL(String sql Object[] bindArgs) Execute une instruction SQL qui nrsquoest pas un SELECT
rawQuery(String sql String[] selectionArgs)
Execute une requecircte SQL de type SELECT et retourne un ensemble de reacutesultat dans un curseur CURSOR
openOrCreateDatabase(String name int mode CursorFactory factory)
Retourne un SQLiteDatabe Les paramegravetres sont nom pour la base de donneacutees Il Peut ecirctre null Le Context Mode ici (Context MODE_PRIVATE) qui veut dire que seule votre activiteacute a droit drsquoy acceacuteder Crsquoest le mode par deacutefaut
Les curseurs sont des variables (zone meacutemoire) utiliseacutees pour reacutecupeacuterer le reacutesultat de requecirctes de type SELECT Les curseurs sont des objets qui contiennent les reacutesultats dune recherche dans une base de donneacutees Ce sont en fait des objets qui fonctionnent comme les tableaux Ils contiennent les colonnes et lignes qui ont eacuteteacute renvoyeacutees par la requecircte On y accegravede ligne par ligne puis colonne par colonne
Un objet de type Curseur possegravede un pointeur sur lrsquoenregistrement courant Agrave la
reacuteception de cet objet le pointeur se trouve devant le premier enregistrement
6 Denis Brunet Saliha Yacoub
Voici quelques meacutethodes de lrsquoobjet Curseur
Pour vous deacuteplacer entre les enregistrements vous pouvez utiliser les meacutethodes
moveToFirst () et moveToNext () (MoveToPrevious() et moveToLast() pour une
lecture inverse)
La meacutethode isAfterLast() permet de veacuterifier si la fin du reacutesultat de la requecircte a eacuteteacute
atteint
getCount() permet drsquoobtenir le nombre drsquoenregistrements de la requecircte
Cursor fournit les meacutethodes get () par exemple getLong (columnIndex) getString
(columnIndex) pour acceacuteder aux donneacutees de lrsquoenregistrement courant Le
columnIndex est lrsquoindex de la colonne agrave acceacuteder
Cursor fournit eacutegalement la meacutethode getColumnIndexOrThrow (String) qui permet
dobtenir lindex de colonne pour un nom de colonne de la table
Un curseur doit ecirctre fermeacute avec la meacutethode close()
Exemple drsquoapplication utilisant SQLite et Android
7 Denis Brunet Saliha Yacoub
Contenu du fichier activity_mainxml
ltxml version=10 encoding=utf-8gt
ltRelativeLayout xmlnsandroid=httpschemasandroidcomapkresandroid
androidid=+idmyLayout
androidstretchColumns=0
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
8 Denis Brunet Saliha Yacoub
ltTableLayout
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltTextView androidtext=Gestion des joueurs
androidlayout_column=1
androidlayout_width=wrap_content
androidlayout_height=wrap_content
gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltTextView androidtext=stringNum
androidlayout_column=1
androidlayout_width=wrap_content
androidlayout_height=wrap_content
gt
ltEditText androidid=+idedtNum
androidinputType=number
androidlayout_column=2
androidlayout_width=150dp
androidlayout_height=40dp
gt
ltTableRowgt
9 Denis Brunet Saliha Yacoub
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltTextView androidtext=stringnom
androidlayout_column=1
androidlayout_width=wrap_content
androidlayout_height=wrap_content
gt
ltEditText androidid=+idedtNom
androidinputType=text
androidlayout_column=2
androidlayout_width=150dp
androidlayout_height=40dp
gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltTextView androidtext=stringprenom
androidlayout_column=1
androidlayout_width=wrap_content
androidlayout_height=wrap_content
gt
ltEditText androidid=+idedtPrenom
androidinputType=text
10 Denis Brunet Saliha Yacoub
androidlayout_column=2
androidlayout_width=150dp
androidlayout_height=40dp
gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltButton androidid=+idbtnAjouter
androidtext=stringajouter
androidlayout_column=1
androidlayout_width=100dp
androidlayout_height=40dp
gt
ltButton androidid=+idbtnSupprimer
androidtext=stringsupprimer
androidlayout_column=2
androidlayout_width=100dp
androidlayout_height=40dp
androidlayout_centerVertical=true
gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltButton androidid=+idbtnAfficher
11 Denis Brunet Saliha Yacoub
androidtext=stringafficher
androidlayout_column=1
androidlayout_width=100dp
androidlayout_height=40dp
gt
ltButton androidid=+idbtnAffichertout
androidtext=stringaffichertout
androidlayout_width=100dp
androidlayout_height=40dp
androidlayout_column=2 gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltButton androidid=+idbtnSuivant
androidtext=stringsuivant
androidlayout_column=1
androidlayout_width=100dp
androidlayout_height=40dp
gt
ltButton androidid=+idbtnPrcedent
androidtext=stringprecedent
androidlayout_width=100dp
androidlayout_height=40dp
androidlayout_column=2 gt
ltTableRowgt
12 Denis Brunet Saliha Yacoub
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltButton androidid=+idbtnPremier
androidtext=stringpremier
androidlayout_column=1
androidlayout_width=100dp
androidlayout_height=40dp
gt
ltTableRowgt
ltTableLayoutgt
ltRelativeLayoutgt
Contenu du fichier stringsxml
ltresourcesgt
ltstring name=app_namegtSqliteExempleltstringgt
ltstring name=NumgtNumeacutero ltstringgt
ltstring name=nomgtNom ltstringgt
ltstring name=prenomgtPrenom ltstringgt
ltstring name =ajoutergt Ajouterltstringgt
ltstring name =supprimergt Supprimerltstringgt
ltstring name =affichergt Afficherltstringgt
ltstring name =affichertoutgt ToutAfficherltstringgt
ltstring name =suivantgt Suivantltstringgt
ltstring name =precedentgt Precedentltstringgt
ltstring name =premiergt Premierltstringgt
ltresourcesgt
13 Denis Brunet Saliha Yacoub
Contenu MainActivityjava
package comexamplesalihayacoubsqliteexemple
import androidappActivity
import androidappAlertDialogBuilder
import androidcontentContext
import androiddatabaseCursor
import androiddatabasesqliteSQLiteDatabase
import androidosBundle
import androidviewView
import androidviewViewOnClickListener
import androidwidgetButton
import androidwidgetEditText
public class MainActivity extends Activity implements OnClickListener
Deacuteclarations
EditText edtNom edtPrenom edtNum
Button btnAfficher btnSupprimer btnAjouter btnAffichertout
Button btnSuivant btnPrcedent btnPremier
SQLiteDatabase bd
Cursor c1 utiliseacute par les boutons suivant et preacuteceacutedent
Override
public void onCreate(Bundle savedInstanceState)
superonCreate(savedInstanceState)
setContentView(Rlayoutactivity_main)
14 Denis Brunet Saliha Yacoub
edtNom = (EditText) findViewById(RidedtNom)
edtPrenom = (EditText) findViewById(RidedtPrenom)
edtNum = (EditText) findViewById(RidedtNum)
btnAjouter = (Button) findViewById(RidbtnAjouter)
btnSupprimer = (Button) findViewById(RidbtnSupprimer)
btnAfficher = (Button) findViewById(RidbtnAfficher)
btnAffichertout = (Button) findViewById(RidbtnAffichertout)
btnSuivant =(Button)findViewById(RidbtnSuivant)
btnPrecdent =(Button)findViewById(RidbtnPrcedent)
btnPremier =(Button)findViewById(RidbtnPremier)
btnAjoutersetOnClickListener(this)
btnSupprimersetOnClickListener(this)
btnAffichertoutsetOnClickListener(this)
btnSupprimersetOnClickListener(this)
btnAffichersetOnClickListener(this)
btnSuivantsetOnClickListener(this)
btnPrecdentsetOnClickListener(this)
btnPremiersetOnClickListener(this)
bd = openOrCreateDatabase(GestionJoueurs ContextMODE_PRIVATEnull)
bdexecSQL(CREATE TABLE IF NOT EXISTS Joueurs(num integer primary key autoincrement
nom VARCHARprenom VARCHAR))
public void onClick(View view)
15 Denis Brunet Saliha Yacoub
if(view==btnAjouter)
if(edtNomgetText()toString()trim()length()==0||
edtPrenomgetText()toString()trim()length()==0)
AfficheMessage(Erreur Entrer toutes les valeurs)
return
bdexecSQL(INSERT INTO joueurs(nomprenom) VALUES( + edtNomgetText() +
+ edtPrenomgetText() + ))
AfficheMessage(Succegraves Information ajouter)
videTexte()
fin bouton ajouter
---------------DeacutebutAfficher TOUT
if(view==btnAffichertout)
Cursor c=bdrawQuery(SELECT FROM Joueursnull)
if(cgetCount()==0)
AfficheMessage(Erreur Aucune donneacutee)
return
StringBuffer buffer=new StringBuffer()
while(cmoveToNext())
bufferappend(Numeacutero +cgetInt(0)+n)
bufferappend(Non +cgetString(1)+n)
bufferappend(Preacutenom +cgetString(2)+n)
16 Denis Brunet Saliha Yacoub
cclose()
AfficheMessage(Les joueurs buffertoString())
----fin afficher tout
Bouton supprimer
if(view==btnSupprimer)
if(edtNumgetText()toString()trim()length()==0)
AfficheMessage(Erreur Entrer un numeacutero de joueur)
return
Cursor c=bdrawQuery(SELECT FROM Joueurs WHERE num=+ edtNumgetText() null)
if(cmoveToFirst())
bdexecSQL(DELETE FROM Joueurs WHERE num= + edtNumgetText() )
AfficheMessage(Succegraves Information deacutetruite)
else
AfficheMessage(Erreur Numeacutero invalide)
videTexte()
fin supprimer
17 Denis Brunet Saliha Yacoub
Bouton afficher le premier
if(view==btnPremier)
try
c1 = bdrawQuery(SELECT FROM Joueurs null)
if (c1getCount() == 0)
AfficheMessage(Erreur Aucune donneacutee)
return
if(c1moveToFirst())
edtNomsetText(c1getString(1))
dtPrenomsetText(c1getString(2))
fin du try
catch(Exception se)
ToastmakeText(MainActivitythis message+ segetMessage()toString()
ToastLENGTH_LONG)show()
Fin du premier
bouton suivant
if(view ==btnSuivant)
if(c1moveToNext())
edtNomsetText(c1getString(1))
edtPrenomsetText(c1getString(2))
18 Denis Brunet Saliha Yacoub
bouton preacutecedent
if(view ==btnPrecdent)
if(c1moveToPrevious())
edtNomsetText(c1getString(1))
edtPrenomsetText(c1getString(2))
fin preacutecedent
Bouton afficher un Enregistrement
if(view==btnAfficher)
Cursor c = bdrawQuery(SELECT FROM Joueurs where num= + edtNumgetText()
null)
if (cgetCount() == 0)
AfficheMessage(Erreur Aucune donneacutee)
return
if(cmoveToFirst())
edtNomsetText(cgetString(1))
edtPrenomsetText(cgetString(2))
fin Afficher
Fin du onClick
19 Denis Brunet Saliha Yacoub
public void AfficheMessage(String titreString message)
Builder builder=new Builder(this)
buildersetCancelable(true)
buildersetTitle(titre)
buildersetMessage(message)
buildershow()
public void videTexte()
edtNumsetText()
edtNomsetText()
edtPrenomsetText()
fin
Sources
httpswwwsqliteorgquickstarthtml
Notes de cours de Denis Brunet
httpdeveloperandroidcomreferenceandroiddatabasesqliteSQLiteDatabasehtml
httpdeveloperandroidcomreferenceandroidcontentContexthtml
httpsopenclassroomscomcoursescreez-des-applications-pour-android
httpwwwuniv-orleansfrlifoMembersJean-FrancoisLalandeenseignementandroidcours-
androidpdf
20 Denis Brunet Saliha Yacoub
Travail final Partie 2
Pondeacuteration 8
Date de remise le 19 mai avant 16h10
1- Directement sur votre teacuteleacutephonetablette creacuteer la table circuits suivantes en utilisant
SQLite
Colonnes Types et contrainte
IdCircuit integer primary key autoincrement
VilleDepart Varchar
VilleArivee Varchar
Prix REAL
Duree integer
2- Creacuteer lrsquoapplication JDBC-Android qui permet
a Creacuteer la base de donneacutees
b Drsquoajouter un enregistrement
c De supprimer un enregistrement
d Rechercher un circuit selon la ville de deacutepart Srsquoil y a plusieurs circuits on doit
pouvoir se deacuteplacer drsquoun enregistrement agrave lrsquoautre par des boutons suivant et
preacutecedent
Important Le cours sur SQLite et Android sera preacutesenteacute le lundi 09 mai
3 Denis Brunet Saliha Yacoub
4 Denis Brunet Saliha Yacoub
JDBC et SQlite Voir le cours laquoJdbc en Brefraquo Par le menu Fichier Project Structure agrave lrsquoonglet Libraire Ajouter
5 Denis Brunet Saliha Yacoub
SQLite sur Android
Deux meacutethodes populaires pour acceacuteder et exploiter agrave une base de donneacutees SQLite
avec Android Une qui utilise surtout la classe SQLiteDatabase (proche de la bd) et celle
qui utilise la classe SQLiteOpenHelper et SQLiteDatabase (proche de la prog)
La meacutethode qui sera deacutetailleacutee ici est celle qui utilise la classe SQLiteDatabase
La classe SQLiteDatabase a des meacutethodes qui permettent de faire une gestion complegravete
drsquoune base de donneacutees SQLite sur appareils mobiles Android
Voici quelques meacutethodes de cette classe
Meacutethodes Rocircle
execSQL(String sql Object[] bindArgs) Execute une instruction SQL qui nrsquoest pas un SELECT
rawQuery(String sql String[] selectionArgs)
Execute une requecircte SQL de type SELECT et retourne un ensemble de reacutesultat dans un curseur CURSOR
openOrCreateDatabase(String name int mode CursorFactory factory)
Retourne un SQLiteDatabe Les paramegravetres sont nom pour la base de donneacutees Il Peut ecirctre null Le Context Mode ici (Context MODE_PRIVATE) qui veut dire que seule votre activiteacute a droit drsquoy acceacuteder Crsquoest le mode par deacutefaut
Les curseurs sont des variables (zone meacutemoire) utiliseacutees pour reacutecupeacuterer le reacutesultat de requecirctes de type SELECT Les curseurs sont des objets qui contiennent les reacutesultats dune recherche dans une base de donneacutees Ce sont en fait des objets qui fonctionnent comme les tableaux Ils contiennent les colonnes et lignes qui ont eacuteteacute renvoyeacutees par la requecircte On y accegravede ligne par ligne puis colonne par colonne
Un objet de type Curseur possegravede un pointeur sur lrsquoenregistrement courant Agrave la
reacuteception de cet objet le pointeur se trouve devant le premier enregistrement
6 Denis Brunet Saliha Yacoub
Voici quelques meacutethodes de lrsquoobjet Curseur
Pour vous deacuteplacer entre les enregistrements vous pouvez utiliser les meacutethodes
moveToFirst () et moveToNext () (MoveToPrevious() et moveToLast() pour une
lecture inverse)
La meacutethode isAfterLast() permet de veacuterifier si la fin du reacutesultat de la requecircte a eacuteteacute
atteint
getCount() permet drsquoobtenir le nombre drsquoenregistrements de la requecircte
Cursor fournit les meacutethodes get () par exemple getLong (columnIndex) getString
(columnIndex) pour acceacuteder aux donneacutees de lrsquoenregistrement courant Le
columnIndex est lrsquoindex de la colonne agrave acceacuteder
Cursor fournit eacutegalement la meacutethode getColumnIndexOrThrow (String) qui permet
dobtenir lindex de colonne pour un nom de colonne de la table
Un curseur doit ecirctre fermeacute avec la meacutethode close()
Exemple drsquoapplication utilisant SQLite et Android
7 Denis Brunet Saliha Yacoub
Contenu du fichier activity_mainxml
ltxml version=10 encoding=utf-8gt
ltRelativeLayout xmlnsandroid=httpschemasandroidcomapkresandroid
androidid=+idmyLayout
androidstretchColumns=0
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
8 Denis Brunet Saliha Yacoub
ltTableLayout
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltTextView androidtext=Gestion des joueurs
androidlayout_column=1
androidlayout_width=wrap_content
androidlayout_height=wrap_content
gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltTextView androidtext=stringNum
androidlayout_column=1
androidlayout_width=wrap_content
androidlayout_height=wrap_content
gt
ltEditText androidid=+idedtNum
androidinputType=number
androidlayout_column=2
androidlayout_width=150dp
androidlayout_height=40dp
gt
ltTableRowgt
9 Denis Brunet Saliha Yacoub
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltTextView androidtext=stringnom
androidlayout_column=1
androidlayout_width=wrap_content
androidlayout_height=wrap_content
gt
ltEditText androidid=+idedtNom
androidinputType=text
androidlayout_column=2
androidlayout_width=150dp
androidlayout_height=40dp
gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltTextView androidtext=stringprenom
androidlayout_column=1
androidlayout_width=wrap_content
androidlayout_height=wrap_content
gt
ltEditText androidid=+idedtPrenom
androidinputType=text
10 Denis Brunet Saliha Yacoub
androidlayout_column=2
androidlayout_width=150dp
androidlayout_height=40dp
gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltButton androidid=+idbtnAjouter
androidtext=stringajouter
androidlayout_column=1
androidlayout_width=100dp
androidlayout_height=40dp
gt
ltButton androidid=+idbtnSupprimer
androidtext=stringsupprimer
androidlayout_column=2
androidlayout_width=100dp
androidlayout_height=40dp
androidlayout_centerVertical=true
gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltButton androidid=+idbtnAfficher
11 Denis Brunet Saliha Yacoub
androidtext=stringafficher
androidlayout_column=1
androidlayout_width=100dp
androidlayout_height=40dp
gt
ltButton androidid=+idbtnAffichertout
androidtext=stringaffichertout
androidlayout_width=100dp
androidlayout_height=40dp
androidlayout_column=2 gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltButton androidid=+idbtnSuivant
androidtext=stringsuivant
androidlayout_column=1
androidlayout_width=100dp
androidlayout_height=40dp
gt
ltButton androidid=+idbtnPrcedent
androidtext=stringprecedent
androidlayout_width=100dp
androidlayout_height=40dp
androidlayout_column=2 gt
ltTableRowgt
12 Denis Brunet Saliha Yacoub
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltButton androidid=+idbtnPremier
androidtext=stringpremier
androidlayout_column=1
androidlayout_width=100dp
androidlayout_height=40dp
gt
ltTableRowgt
ltTableLayoutgt
ltRelativeLayoutgt
Contenu du fichier stringsxml
ltresourcesgt
ltstring name=app_namegtSqliteExempleltstringgt
ltstring name=NumgtNumeacutero ltstringgt
ltstring name=nomgtNom ltstringgt
ltstring name=prenomgtPrenom ltstringgt
ltstring name =ajoutergt Ajouterltstringgt
ltstring name =supprimergt Supprimerltstringgt
ltstring name =affichergt Afficherltstringgt
ltstring name =affichertoutgt ToutAfficherltstringgt
ltstring name =suivantgt Suivantltstringgt
ltstring name =precedentgt Precedentltstringgt
ltstring name =premiergt Premierltstringgt
ltresourcesgt
13 Denis Brunet Saliha Yacoub
Contenu MainActivityjava
package comexamplesalihayacoubsqliteexemple
import androidappActivity
import androidappAlertDialogBuilder
import androidcontentContext
import androiddatabaseCursor
import androiddatabasesqliteSQLiteDatabase
import androidosBundle
import androidviewView
import androidviewViewOnClickListener
import androidwidgetButton
import androidwidgetEditText
public class MainActivity extends Activity implements OnClickListener
Deacuteclarations
EditText edtNom edtPrenom edtNum
Button btnAfficher btnSupprimer btnAjouter btnAffichertout
Button btnSuivant btnPrcedent btnPremier
SQLiteDatabase bd
Cursor c1 utiliseacute par les boutons suivant et preacuteceacutedent
Override
public void onCreate(Bundle savedInstanceState)
superonCreate(savedInstanceState)
setContentView(Rlayoutactivity_main)
14 Denis Brunet Saliha Yacoub
edtNom = (EditText) findViewById(RidedtNom)
edtPrenom = (EditText) findViewById(RidedtPrenom)
edtNum = (EditText) findViewById(RidedtNum)
btnAjouter = (Button) findViewById(RidbtnAjouter)
btnSupprimer = (Button) findViewById(RidbtnSupprimer)
btnAfficher = (Button) findViewById(RidbtnAfficher)
btnAffichertout = (Button) findViewById(RidbtnAffichertout)
btnSuivant =(Button)findViewById(RidbtnSuivant)
btnPrecdent =(Button)findViewById(RidbtnPrcedent)
btnPremier =(Button)findViewById(RidbtnPremier)
btnAjoutersetOnClickListener(this)
btnSupprimersetOnClickListener(this)
btnAffichertoutsetOnClickListener(this)
btnSupprimersetOnClickListener(this)
btnAffichersetOnClickListener(this)
btnSuivantsetOnClickListener(this)
btnPrecdentsetOnClickListener(this)
btnPremiersetOnClickListener(this)
bd = openOrCreateDatabase(GestionJoueurs ContextMODE_PRIVATEnull)
bdexecSQL(CREATE TABLE IF NOT EXISTS Joueurs(num integer primary key autoincrement
nom VARCHARprenom VARCHAR))
public void onClick(View view)
15 Denis Brunet Saliha Yacoub
if(view==btnAjouter)
if(edtNomgetText()toString()trim()length()==0||
edtPrenomgetText()toString()trim()length()==0)
AfficheMessage(Erreur Entrer toutes les valeurs)
return
bdexecSQL(INSERT INTO joueurs(nomprenom) VALUES( + edtNomgetText() +
+ edtPrenomgetText() + ))
AfficheMessage(Succegraves Information ajouter)
videTexte()
fin bouton ajouter
---------------DeacutebutAfficher TOUT
if(view==btnAffichertout)
Cursor c=bdrawQuery(SELECT FROM Joueursnull)
if(cgetCount()==0)
AfficheMessage(Erreur Aucune donneacutee)
return
StringBuffer buffer=new StringBuffer()
while(cmoveToNext())
bufferappend(Numeacutero +cgetInt(0)+n)
bufferappend(Non +cgetString(1)+n)
bufferappend(Preacutenom +cgetString(2)+n)
16 Denis Brunet Saliha Yacoub
cclose()
AfficheMessage(Les joueurs buffertoString())
----fin afficher tout
Bouton supprimer
if(view==btnSupprimer)
if(edtNumgetText()toString()trim()length()==0)
AfficheMessage(Erreur Entrer un numeacutero de joueur)
return
Cursor c=bdrawQuery(SELECT FROM Joueurs WHERE num=+ edtNumgetText() null)
if(cmoveToFirst())
bdexecSQL(DELETE FROM Joueurs WHERE num= + edtNumgetText() )
AfficheMessage(Succegraves Information deacutetruite)
else
AfficheMessage(Erreur Numeacutero invalide)
videTexte()
fin supprimer
17 Denis Brunet Saliha Yacoub
Bouton afficher le premier
if(view==btnPremier)
try
c1 = bdrawQuery(SELECT FROM Joueurs null)
if (c1getCount() == 0)
AfficheMessage(Erreur Aucune donneacutee)
return
if(c1moveToFirst())
edtNomsetText(c1getString(1))
dtPrenomsetText(c1getString(2))
fin du try
catch(Exception se)
ToastmakeText(MainActivitythis message+ segetMessage()toString()
ToastLENGTH_LONG)show()
Fin du premier
bouton suivant
if(view ==btnSuivant)
if(c1moveToNext())
edtNomsetText(c1getString(1))
edtPrenomsetText(c1getString(2))
18 Denis Brunet Saliha Yacoub
bouton preacutecedent
if(view ==btnPrecdent)
if(c1moveToPrevious())
edtNomsetText(c1getString(1))
edtPrenomsetText(c1getString(2))
fin preacutecedent
Bouton afficher un Enregistrement
if(view==btnAfficher)
Cursor c = bdrawQuery(SELECT FROM Joueurs where num= + edtNumgetText()
null)
if (cgetCount() == 0)
AfficheMessage(Erreur Aucune donneacutee)
return
if(cmoveToFirst())
edtNomsetText(cgetString(1))
edtPrenomsetText(cgetString(2))
fin Afficher
Fin du onClick
19 Denis Brunet Saliha Yacoub
public void AfficheMessage(String titreString message)
Builder builder=new Builder(this)
buildersetCancelable(true)
buildersetTitle(titre)
buildersetMessage(message)
buildershow()
public void videTexte()
edtNumsetText()
edtNomsetText()
edtPrenomsetText()
fin
Sources
httpswwwsqliteorgquickstarthtml
Notes de cours de Denis Brunet
httpdeveloperandroidcomreferenceandroiddatabasesqliteSQLiteDatabasehtml
httpdeveloperandroidcomreferenceandroidcontentContexthtml
httpsopenclassroomscomcoursescreez-des-applications-pour-android
httpwwwuniv-orleansfrlifoMembersJean-FrancoisLalandeenseignementandroidcours-
androidpdf
20 Denis Brunet Saliha Yacoub
Travail final Partie 2
Pondeacuteration 8
Date de remise le 19 mai avant 16h10
1- Directement sur votre teacuteleacutephonetablette creacuteer la table circuits suivantes en utilisant
SQLite
Colonnes Types et contrainte
IdCircuit integer primary key autoincrement
VilleDepart Varchar
VilleArivee Varchar
Prix REAL
Duree integer
2- Creacuteer lrsquoapplication JDBC-Android qui permet
a Creacuteer la base de donneacutees
b Drsquoajouter un enregistrement
c De supprimer un enregistrement
d Rechercher un circuit selon la ville de deacutepart Srsquoil y a plusieurs circuits on doit
pouvoir se deacuteplacer drsquoun enregistrement agrave lrsquoautre par des boutons suivant et
preacutecedent
Important Le cours sur SQLite et Android sera preacutesenteacute le lundi 09 mai
4 Denis Brunet Saliha Yacoub
JDBC et SQlite Voir le cours laquoJdbc en Brefraquo Par le menu Fichier Project Structure agrave lrsquoonglet Libraire Ajouter
5 Denis Brunet Saliha Yacoub
SQLite sur Android
Deux meacutethodes populaires pour acceacuteder et exploiter agrave une base de donneacutees SQLite
avec Android Une qui utilise surtout la classe SQLiteDatabase (proche de la bd) et celle
qui utilise la classe SQLiteOpenHelper et SQLiteDatabase (proche de la prog)
La meacutethode qui sera deacutetailleacutee ici est celle qui utilise la classe SQLiteDatabase
La classe SQLiteDatabase a des meacutethodes qui permettent de faire une gestion complegravete
drsquoune base de donneacutees SQLite sur appareils mobiles Android
Voici quelques meacutethodes de cette classe
Meacutethodes Rocircle
execSQL(String sql Object[] bindArgs) Execute une instruction SQL qui nrsquoest pas un SELECT
rawQuery(String sql String[] selectionArgs)
Execute une requecircte SQL de type SELECT et retourne un ensemble de reacutesultat dans un curseur CURSOR
openOrCreateDatabase(String name int mode CursorFactory factory)
Retourne un SQLiteDatabe Les paramegravetres sont nom pour la base de donneacutees Il Peut ecirctre null Le Context Mode ici (Context MODE_PRIVATE) qui veut dire que seule votre activiteacute a droit drsquoy acceacuteder Crsquoest le mode par deacutefaut
Les curseurs sont des variables (zone meacutemoire) utiliseacutees pour reacutecupeacuterer le reacutesultat de requecirctes de type SELECT Les curseurs sont des objets qui contiennent les reacutesultats dune recherche dans une base de donneacutees Ce sont en fait des objets qui fonctionnent comme les tableaux Ils contiennent les colonnes et lignes qui ont eacuteteacute renvoyeacutees par la requecircte On y accegravede ligne par ligne puis colonne par colonne
Un objet de type Curseur possegravede un pointeur sur lrsquoenregistrement courant Agrave la
reacuteception de cet objet le pointeur se trouve devant le premier enregistrement
6 Denis Brunet Saliha Yacoub
Voici quelques meacutethodes de lrsquoobjet Curseur
Pour vous deacuteplacer entre les enregistrements vous pouvez utiliser les meacutethodes
moveToFirst () et moveToNext () (MoveToPrevious() et moveToLast() pour une
lecture inverse)
La meacutethode isAfterLast() permet de veacuterifier si la fin du reacutesultat de la requecircte a eacuteteacute
atteint
getCount() permet drsquoobtenir le nombre drsquoenregistrements de la requecircte
Cursor fournit les meacutethodes get () par exemple getLong (columnIndex) getString
(columnIndex) pour acceacuteder aux donneacutees de lrsquoenregistrement courant Le
columnIndex est lrsquoindex de la colonne agrave acceacuteder
Cursor fournit eacutegalement la meacutethode getColumnIndexOrThrow (String) qui permet
dobtenir lindex de colonne pour un nom de colonne de la table
Un curseur doit ecirctre fermeacute avec la meacutethode close()
Exemple drsquoapplication utilisant SQLite et Android
7 Denis Brunet Saliha Yacoub
Contenu du fichier activity_mainxml
ltxml version=10 encoding=utf-8gt
ltRelativeLayout xmlnsandroid=httpschemasandroidcomapkresandroid
androidid=+idmyLayout
androidstretchColumns=0
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
8 Denis Brunet Saliha Yacoub
ltTableLayout
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltTextView androidtext=Gestion des joueurs
androidlayout_column=1
androidlayout_width=wrap_content
androidlayout_height=wrap_content
gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltTextView androidtext=stringNum
androidlayout_column=1
androidlayout_width=wrap_content
androidlayout_height=wrap_content
gt
ltEditText androidid=+idedtNum
androidinputType=number
androidlayout_column=2
androidlayout_width=150dp
androidlayout_height=40dp
gt
ltTableRowgt
9 Denis Brunet Saliha Yacoub
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltTextView androidtext=stringnom
androidlayout_column=1
androidlayout_width=wrap_content
androidlayout_height=wrap_content
gt
ltEditText androidid=+idedtNom
androidinputType=text
androidlayout_column=2
androidlayout_width=150dp
androidlayout_height=40dp
gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltTextView androidtext=stringprenom
androidlayout_column=1
androidlayout_width=wrap_content
androidlayout_height=wrap_content
gt
ltEditText androidid=+idedtPrenom
androidinputType=text
10 Denis Brunet Saliha Yacoub
androidlayout_column=2
androidlayout_width=150dp
androidlayout_height=40dp
gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltButton androidid=+idbtnAjouter
androidtext=stringajouter
androidlayout_column=1
androidlayout_width=100dp
androidlayout_height=40dp
gt
ltButton androidid=+idbtnSupprimer
androidtext=stringsupprimer
androidlayout_column=2
androidlayout_width=100dp
androidlayout_height=40dp
androidlayout_centerVertical=true
gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltButton androidid=+idbtnAfficher
11 Denis Brunet Saliha Yacoub
androidtext=stringafficher
androidlayout_column=1
androidlayout_width=100dp
androidlayout_height=40dp
gt
ltButton androidid=+idbtnAffichertout
androidtext=stringaffichertout
androidlayout_width=100dp
androidlayout_height=40dp
androidlayout_column=2 gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltButton androidid=+idbtnSuivant
androidtext=stringsuivant
androidlayout_column=1
androidlayout_width=100dp
androidlayout_height=40dp
gt
ltButton androidid=+idbtnPrcedent
androidtext=stringprecedent
androidlayout_width=100dp
androidlayout_height=40dp
androidlayout_column=2 gt
ltTableRowgt
12 Denis Brunet Saliha Yacoub
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltButton androidid=+idbtnPremier
androidtext=stringpremier
androidlayout_column=1
androidlayout_width=100dp
androidlayout_height=40dp
gt
ltTableRowgt
ltTableLayoutgt
ltRelativeLayoutgt
Contenu du fichier stringsxml
ltresourcesgt
ltstring name=app_namegtSqliteExempleltstringgt
ltstring name=NumgtNumeacutero ltstringgt
ltstring name=nomgtNom ltstringgt
ltstring name=prenomgtPrenom ltstringgt
ltstring name =ajoutergt Ajouterltstringgt
ltstring name =supprimergt Supprimerltstringgt
ltstring name =affichergt Afficherltstringgt
ltstring name =affichertoutgt ToutAfficherltstringgt
ltstring name =suivantgt Suivantltstringgt
ltstring name =precedentgt Precedentltstringgt
ltstring name =premiergt Premierltstringgt
ltresourcesgt
13 Denis Brunet Saliha Yacoub
Contenu MainActivityjava
package comexamplesalihayacoubsqliteexemple
import androidappActivity
import androidappAlertDialogBuilder
import androidcontentContext
import androiddatabaseCursor
import androiddatabasesqliteSQLiteDatabase
import androidosBundle
import androidviewView
import androidviewViewOnClickListener
import androidwidgetButton
import androidwidgetEditText
public class MainActivity extends Activity implements OnClickListener
Deacuteclarations
EditText edtNom edtPrenom edtNum
Button btnAfficher btnSupprimer btnAjouter btnAffichertout
Button btnSuivant btnPrcedent btnPremier
SQLiteDatabase bd
Cursor c1 utiliseacute par les boutons suivant et preacuteceacutedent
Override
public void onCreate(Bundle savedInstanceState)
superonCreate(savedInstanceState)
setContentView(Rlayoutactivity_main)
14 Denis Brunet Saliha Yacoub
edtNom = (EditText) findViewById(RidedtNom)
edtPrenom = (EditText) findViewById(RidedtPrenom)
edtNum = (EditText) findViewById(RidedtNum)
btnAjouter = (Button) findViewById(RidbtnAjouter)
btnSupprimer = (Button) findViewById(RidbtnSupprimer)
btnAfficher = (Button) findViewById(RidbtnAfficher)
btnAffichertout = (Button) findViewById(RidbtnAffichertout)
btnSuivant =(Button)findViewById(RidbtnSuivant)
btnPrecdent =(Button)findViewById(RidbtnPrcedent)
btnPremier =(Button)findViewById(RidbtnPremier)
btnAjoutersetOnClickListener(this)
btnSupprimersetOnClickListener(this)
btnAffichertoutsetOnClickListener(this)
btnSupprimersetOnClickListener(this)
btnAffichersetOnClickListener(this)
btnSuivantsetOnClickListener(this)
btnPrecdentsetOnClickListener(this)
btnPremiersetOnClickListener(this)
bd = openOrCreateDatabase(GestionJoueurs ContextMODE_PRIVATEnull)
bdexecSQL(CREATE TABLE IF NOT EXISTS Joueurs(num integer primary key autoincrement
nom VARCHARprenom VARCHAR))
public void onClick(View view)
15 Denis Brunet Saliha Yacoub
if(view==btnAjouter)
if(edtNomgetText()toString()trim()length()==0||
edtPrenomgetText()toString()trim()length()==0)
AfficheMessage(Erreur Entrer toutes les valeurs)
return
bdexecSQL(INSERT INTO joueurs(nomprenom) VALUES( + edtNomgetText() +
+ edtPrenomgetText() + ))
AfficheMessage(Succegraves Information ajouter)
videTexte()
fin bouton ajouter
---------------DeacutebutAfficher TOUT
if(view==btnAffichertout)
Cursor c=bdrawQuery(SELECT FROM Joueursnull)
if(cgetCount()==0)
AfficheMessage(Erreur Aucune donneacutee)
return
StringBuffer buffer=new StringBuffer()
while(cmoveToNext())
bufferappend(Numeacutero +cgetInt(0)+n)
bufferappend(Non +cgetString(1)+n)
bufferappend(Preacutenom +cgetString(2)+n)
16 Denis Brunet Saliha Yacoub
cclose()
AfficheMessage(Les joueurs buffertoString())
----fin afficher tout
Bouton supprimer
if(view==btnSupprimer)
if(edtNumgetText()toString()trim()length()==0)
AfficheMessage(Erreur Entrer un numeacutero de joueur)
return
Cursor c=bdrawQuery(SELECT FROM Joueurs WHERE num=+ edtNumgetText() null)
if(cmoveToFirst())
bdexecSQL(DELETE FROM Joueurs WHERE num= + edtNumgetText() )
AfficheMessage(Succegraves Information deacutetruite)
else
AfficheMessage(Erreur Numeacutero invalide)
videTexte()
fin supprimer
17 Denis Brunet Saliha Yacoub
Bouton afficher le premier
if(view==btnPremier)
try
c1 = bdrawQuery(SELECT FROM Joueurs null)
if (c1getCount() == 0)
AfficheMessage(Erreur Aucune donneacutee)
return
if(c1moveToFirst())
edtNomsetText(c1getString(1))
dtPrenomsetText(c1getString(2))
fin du try
catch(Exception se)
ToastmakeText(MainActivitythis message+ segetMessage()toString()
ToastLENGTH_LONG)show()
Fin du premier
bouton suivant
if(view ==btnSuivant)
if(c1moveToNext())
edtNomsetText(c1getString(1))
edtPrenomsetText(c1getString(2))
18 Denis Brunet Saliha Yacoub
bouton preacutecedent
if(view ==btnPrecdent)
if(c1moveToPrevious())
edtNomsetText(c1getString(1))
edtPrenomsetText(c1getString(2))
fin preacutecedent
Bouton afficher un Enregistrement
if(view==btnAfficher)
Cursor c = bdrawQuery(SELECT FROM Joueurs where num= + edtNumgetText()
null)
if (cgetCount() == 0)
AfficheMessage(Erreur Aucune donneacutee)
return
if(cmoveToFirst())
edtNomsetText(cgetString(1))
edtPrenomsetText(cgetString(2))
fin Afficher
Fin du onClick
19 Denis Brunet Saliha Yacoub
public void AfficheMessage(String titreString message)
Builder builder=new Builder(this)
buildersetCancelable(true)
buildersetTitle(titre)
buildersetMessage(message)
buildershow()
public void videTexte()
edtNumsetText()
edtNomsetText()
edtPrenomsetText()
fin
Sources
httpswwwsqliteorgquickstarthtml
Notes de cours de Denis Brunet
httpdeveloperandroidcomreferenceandroiddatabasesqliteSQLiteDatabasehtml
httpdeveloperandroidcomreferenceandroidcontentContexthtml
httpsopenclassroomscomcoursescreez-des-applications-pour-android
httpwwwuniv-orleansfrlifoMembersJean-FrancoisLalandeenseignementandroidcours-
androidpdf
20 Denis Brunet Saliha Yacoub
Travail final Partie 2
Pondeacuteration 8
Date de remise le 19 mai avant 16h10
1- Directement sur votre teacuteleacutephonetablette creacuteer la table circuits suivantes en utilisant
SQLite
Colonnes Types et contrainte
IdCircuit integer primary key autoincrement
VilleDepart Varchar
VilleArivee Varchar
Prix REAL
Duree integer
2- Creacuteer lrsquoapplication JDBC-Android qui permet
a Creacuteer la base de donneacutees
b Drsquoajouter un enregistrement
c De supprimer un enregistrement
d Rechercher un circuit selon la ville de deacutepart Srsquoil y a plusieurs circuits on doit
pouvoir se deacuteplacer drsquoun enregistrement agrave lrsquoautre par des boutons suivant et
preacutecedent
Important Le cours sur SQLite et Android sera preacutesenteacute le lundi 09 mai
5 Denis Brunet Saliha Yacoub
SQLite sur Android
Deux meacutethodes populaires pour acceacuteder et exploiter agrave une base de donneacutees SQLite
avec Android Une qui utilise surtout la classe SQLiteDatabase (proche de la bd) et celle
qui utilise la classe SQLiteOpenHelper et SQLiteDatabase (proche de la prog)
La meacutethode qui sera deacutetailleacutee ici est celle qui utilise la classe SQLiteDatabase
La classe SQLiteDatabase a des meacutethodes qui permettent de faire une gestion complegravete
drsquoune base de donneacutees SQLite sur appareils mobiles Android
Voici quelques meacutethodes de cette classe
Meacutethodes Rocircle
execSQL(String sql Object[] bindArgs) Execute une instruction SQL qui nrsquoest pas un SELECT
rawQuery(String sql String[] selectionArgs)
Execute une requecircte SQL de type SELECT et retourne un ensemble de reacutesultat dans un curseur CURSOR
openOrCreateDatabase(String name int mode CursorFactory factory)
Retourne un SQLiteDatabe Les paramegravetres sont nom pour la base de donneacutees Il Peut ecirctre null Le Context Mode ici (Context MODE_PRIVATE) qui veut dire que seule votre activiteacute a droit drsquoy acceacuteder Crsquoest le mode par deacutefaut
Les curseurs sont des variables (zone meacutemoire) utiliseacutees pour reacutecupeacuterer le reacutesultat de requecirctes de type SELECT Les curseurs sont des objets qui contiennent les reacutesultats dune recherche dans une base de donneacutees Ce sont en fait des objets qui fonctionnent comme les tableaux Ils contiennent les colonnes et lignes qui ont eacuteteacute renvoyeacutees par la requecircte On y accegravede ligne par ligne puis colonne par colonne
Un objet de type Curseur possegravede un pointeur sur lrsquoenregistrement courant Agrave la
reacuteception de cet objet le pointeur se trouve devant le premier enregistrement
6 Denis Brunet Saliha Yacoub
Voici quelques meacutethodes de lrsquoobjet Curseur
Pour vous deacuteplacer entre les enregistrements vous pouvez utiliser les meacutethodes
moveToFirst () et moveToNext () (MoveToPrevious() et moveToLast() pour une
lecture inverse)
La meacutethode isAfterLast() permet de veacuterifier si la fin du reacutesultat de la requecircte a eacuteteacute
atteint
getCount() permet drsquoobtenir le nombre drsquoenregistrements de la requecircte
Cursor fournit les meacutethodes get () par exemple getLong (columnIndex) getString
(columnIndex) pour acceacuteder aux donneacutees de lrsquoenregistrement courant Le
columnIndex est lrsquoindex de la colonne agrave acceacuteder
Cursor fournit eacutegalement la meacutethode getColumnIndexOrThrow (String) qui permet
dobtenir lindex de colonne pour un nom de colonne de la table
Un curseur doit ecirctre fermeacute avec la meacutethode close()
Exemple drsquoapplication utilisant SQLite et Android
7 Denis Brunet Saliha Yacoub
Contenu du fichier activity_mainxml
ltxml version=10 encoding=utf-8gt
ltRelativeLayout xmlnsandroid=httpschemasandroidcomapkresandroid
androidid=+idmyLayout
androidstretchColumns=0
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
8 Denis Brunet Saliha Yacoub
ltTableLayout
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltTextView androidtext=Gestion des joueurs
androidlayout_column=1
androidlayout_width=wrap_content
androidlayout_height=wrap_content
gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltTextView androidtext=stringNum
androidlayout_column=1
androidlayout_width=wrap_content
androidlayout_height=wrap_content
gt
ltEditText androidid=+idedtNum
androidinputType=number
androidlayout_column=2
androidlayout_width=150dp
androidlayout_height=40dp
gt
ltTableRowgt
9 Denis Brunet Saliha Yacoub
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltTextView androidtext=stringnom
androidlayout_column=1
androidlayout_width=wrap_content
androidlayout_height=wrap_content
gt
ltEditText androidid=+idedtNom
androidinputType=text
androidlayout_column=2
androidlayout_width=150dp
androidlayout_height=40dp
gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltTextView androidtext=stringprenom
androidlayout_column=1
androidlayout_width=wrap_content
androidlayout_height=wrap_content
gt
ltEditText androidid=+idedtPrenom
androidinputType=text
10 Denis Brunet Saliha Yacoub
androidlayout_column=2
androidlayout_width=150dp
androidlayout_height=40dp
gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltButton androidid=+idbtnAjouter
androidtext=stringajouter
androidlayout_column=1
androidlayout_width=100dp
androidlayout_height=40dp
gt
ltButton androidid=+idbtnSupprimer
androidtext=stringsupprimer
androidlayout_column=2
androidlayout_width=100dp
androidlayout_height=40dp
androidlayout_centerVertical=true
gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltButton androidid=+idbtnAfficher
11 Denis Brunet Saliha Yacoub
androidtext=stringafficher
androidlayout_column=1
androidlayout_width=100dp
androidlayout_height=40dp
gt
ltButton androidid=+idbtnAffichertout
androidtext=stringaffichertout
androidlayout_width=100dp
androidlayout_height=40dp
androidlayout_column=2 gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltButton androidid=+idbtnSuivant
androidtext=stringsuivant
androidlayout_column=1
androidlayout_width=100dp
androidlayout_height=40dp
gt
ltButton androidid=+idbtnPrcedent
androidtext=stringprecedent
androidlayout_width=100dp
androidlayout_height=40dp
androidlayout_column=2 gt
ltTableRowgt
12 Denis Brunet Saliha Yacoub
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltButton androidid=+idbtnPremier
androidtext=stringpremier
androidlayout_column=1
androidlayout_width=100dp
androidlayout_height=40dp
gt
ltTableRowgt
ltTableLayoutgt
ltRelativeLayoutgt
Contenu du fichier stringsxml
ltresourcesgt
ltstring name=app_namegtSqliteExempleltstringgt
ltstring name=NumgtNumeacutero ltstringgt
ltstring name=nomgtNom ltstringgt
ltstring name=prenomgtPrenom ltstringgt
ltstring name =ajoutergt Ajouterltstringgt
ltstring name =supprimergt Supprimerltstringgt
ltstring name =affichergt Afficherltstringgt
ltstring name =affichertoutgt ToutAfficherltstringgt
ltstring name =suivantgt Suivantltstringgt
ltstring name =precedentgt Precedentltstringgt
ltstring name =premiergt Premierltstringgt
ltresourcesgt
13 Denis Brunet Saliha Yacoub
Contenu MainActivityjava
package comexamplesalihayacoubsqliteexemple
import androidappActivity
import androidappAlertDialogBuilder
import androidcontentContext
import androiddatabaseCursor
import androiddatabasesqliteSQLiteDatabase
import androidosBundle
import androidviewView
import androidviewViewOnClickListener
import androidwidgetButton
import androidwidgetEditText
public class MainActivity extends Activity implements OnClickListener
Deacuteclarations
EditText edtNom edtPrenom edtNum
Button btnAfficher btnSupprimer btnAjouter btnAffichertout
Button btnSuivant btnPrcedent btnPremier
SQLiteDatabase bd
Cursor c1 utiliseacute par les boutons suivant et preacuteceacutedent
Override
public void onCreate(Bundle savedInstanceState)
superonCreate(savedInstanceState)
setContentView(Rlayoutactivity_main)
14 Denis Brunet Saliha Yacoub
edtNom = (EditText) findViewById(RidedtNom)
edtPrenom = (EditText) findViewById(RidedtPrenom)
edtNum = (EditText) findViewById(RidedtNum)
btnAjouter = (Button) findViewById(RidbtnAjouter)
btnSupprimer = (Button) findViewById(RidbtnSupprimer)
btnAfficher = (Button) findViewById(RidbtnAfficher)
btnAffichertout = (Button) findViewById(RidbtnAffichertout)
btnSuivant =(Button)findViewById(RidbtnSuivant)
btnPrecdent =(Button)findViewById(RidbtnPrcedent)
btnPremier =(Button)findViewById(RidbtnPremier)
btnAjoutersetOnClickListener(this)
btnSupprimersetOnClickListener(this)
btnAffichertoutsetOnClickListener(this)
btnSupprimersetOnClickListener(this)
btnAffichersetOnClickListener(this)
btnSuivantsetOnClickListener(this)
btnPrecdentsetOnClickListener(this)
btnPremiersetOnClickListener(this)
bd = openOrCreateDatabase(GestionJoueurs ContextMODE_PRIVATEnull)
bdexecSQL(CREATE TABLE IF NOT EXISTS Joueurs(num integer primary key autoincrement
nom VARCHARprenom VARCHAR))
public void onClick(View view)
15 Denis Brunet Saliha Yacoub
if(view==btnAjouter)
if(edtNomgetText()toString()trim()length()==0||
edtPrenomgetText()toString()trim()length()==0)
AfficheMessage(Erreur Entrer toutes les valeurs)
return
bdexecSQL(INSERT INTO joueurs(nomprenom) VALUES( + edtNomgetText() +
+ edtPrenomgetText() + ))
AfficheMessage(Succegraves Information ajouter)
videTexte()
fin bouton ajouter
---------------DeacutebutAfficher TOUT
if(view==btnAffichertout)
Cursor c=bdrawQuery(SELECT FROM Joueursnull)
if(cgetCount()==0)
AfficheMessage(Erreur Aucune donneacutee)
return
StringBuffer buffer=new StringBuffer()
while(cmoveToNext())
bufferappend(Numeacutero +cgetInt(0)+n)
bufferappend(Non +cgetString(1)+n)
bufferappend(Preacutenom +cgetString(2)+n)
16 Denis Brunet Saliha Yacoub
cclose()
AfficheMessage(Les joueurs buffertoString())
----fin afficher tout
Bouton supprimer
if(view==btnSupprimer)
if(edtNumgetText()toString()trim()length()==0)
AfficheMessage(Erreur Entrer un numeacutero de joueur)
return
Cursor c=bdrawQuery(SELECT FROM Joueurs WHERE num=+ edtNumgetText() null)
if(cmoveToFirst())
bdexecSQL(DELETE FROM Joueurs WHERE num= + edtNumgetText() )
AfficheMessage(Succegraves Information deacutetruite)
else
AfficheMessage(Erreur Numeacutero invalide)
videTexte()
fin supprimer
17 Denis Brunet Saliha Yacoub
Bouton afficher le premier
if(view==btnPremier)
try
c1 = bdrawQuery(SELECT FROM Joueurs null)
if (c1getCount() == 0)
AfficheMessage(Erreur Aucune donneacutee)
return
if(c1moveToFirst())
edtNomsetText(c1getString(1))
dtPrenomsetText(c1getString(2))
fin du try
catch(Exception se)
ToastmakeText(MainActivitythis message+ segetMessage()toString()
ToastLENGTH_LONG)show()
Fin du premier
bouton suivant
if(view ==btnSuivant)
if(c1moveToNext())
edtNomsetText(c1getString(1))
edtPrenomsetText(c1getString(2))
18 Denis Brunet Saliha Yacoub
bouton preacutecedent
if(view ==btnPrecdent)
if(c1moveToPrevious())
edtNomsetText(c1getString(1))
edtPrenomsetText(c1getString(2))
fin preacutecedent
Bouton afficher un Enregistrement
if(view==btnAfficher)
Cursor c = bdrawQuery(SELECT FROM Joueurs where num= + edtNumgetText()
null)
if (cgetCount() == 0)
AfficheMessage(Erreur Aucune donneacutee)
return
if(cmoveToFirst())
edtNomsetText(cgetString(1))
edtPrenomsetText(cgetString(2))
fin Afficher
Fin du onClick
19 Denis Brunet Saliha Yacoub
public void AfficheMessage(String titreString message)
Builder builder=new Builder(this)
buildersetCancelable(true)
buildersetTitle(titre)
buildersetMessage(message)
buildershow()
public void videTexte()
edtNumsetText()
edtNomsetText()
edtPrenomsetText()
fin
Sources
httpswwwsqliteorgquickstarthtml
Notes de cours de Denis Brunet
httpdeveloperandroidcomreferenceandroiddatabasesqliteSQLiteDatabasehtml
httpdeveloperandroidcomreferenceandroidcontentContexthtml
httpsopenclassroomscomcoursescreez-des-applications-pour-android
httpwwwuniv-orleansfrlifoMembersJean-FrancoisLalandeenseignementandroidcours-
androidpdf
20 Denis Brunet Saliha Yacoub
Travail final Partie 2
Pondeacuteration 8
Date de remise le 19 mai avant 16h10
1- Directement sur votre teacuteleacutephonetablette creacuteer la table circuits suivantes en utilisant
SQLite
Colonnes Types et contrainte
IdCircuit integer primary key autoincrement
VilleDepart Varchar
VilleArivee Varchar
Prix REAL
Duree integer
2- Creacuteer lrsquoapplication JDBC-Android qui permet
a Creacuteer la base de donneacutees
b Drsquoajouter un enregistrement
c De supprimer un enregistrement
d Rechercher un circuit selon la ville de deacutepart Srsquoil y a plusieurs circuits on doit
pouvoir se deacuteplacer drsquoun enregistrement agrave lrsquoautre par des boutons suivant et
preacutecedent
Important Le cours sur SQLite et Android sera preacutesenteacute le lundi 09 mai
6 Denis Brunet Saliha Yacoub
Voici quelques meacutethodes de lrsquoobjet Curseur
Pour vous deacuteplacer entre les enregistrements vous pouvez utiliser les meacutethodes
moveToFirst () et moveToNext () (MoveToPrevious() et moveToLast() pour une
lecture inverse)
La meacutethode isAfterLast() permet de veacuterifier si la fin du reacutesultat de la requecircte a eacuteteacute
atteint
getCount() permet drsquoobtenir le nombre drsquoenregistrements de la requecircte
Cursor fournit les meacutethodes get () par exemple getLong (columnIndex) getString
(columnIndex) pour acceacuteder aux donneacutees de lrsquoenregistrement courant Le
columnIndex est lrsquoindex de la colonne agrave acceacuteder
Cursor fournit eacutegalement la meacutethode getColumnIndexOrThrow (String) qui permet
dobtenir lindex de colonne pour un nom de colonne de la table
Un curseur doit ecirctre fermeacute avec la meacutethode close()
Exemple drsquoapplication utilisant SQLite et Android
7 Denis Brunet Saliha Yacoub
Contenu du fichier activity_mainxml
ltxml version=10 encoding=utf-8gt
ltRelativeLayout xmlnsandroid=httpschemasandroidcomapkresandroid
androidid=+idmyLayout
androidstretchColumns=0
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
8 Denis Brunet Saliha Yacoub
ltTableLayout
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltTextView androidtext=Gestion des joueurs
androidlayout_column=1
androidlayout_width=wrap_content
androidlayout_height=wrap_content
gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltTextView androidtext=stringNum
androidlayout_column=1
androidlayout_width=wrap_content
androidlayout_height=wrap_content
gt
ltEditText androidid=+idedtNum
androidinputType=number
androidlayout_column=2
androidlayout_width=150dp
androidlayout_height=40dp
gt
ltTableRowgt
9 Denis Brunet Saliha Yacoub
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltTextView androidtext=stringnom
androidlayout_column=1
androidlayout_width=wrap_content
androidlayout_height=wrap_content
gt
ltEditText androidid=+idedtNom
androidinputType=text
androidlayout_column=2
androidlayout_width=150dp
androidlayout_height=40dp
gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltTextView androidtext=stringprenom
androidlayout_column=1
androidlayout_width=wrap_content
androidlayout_height=wrap_content
gt
ltEditText androidid=+idedtPrenom
androidinputType=text
10 Denis Brunet Saliha Yacoub
androidlayout_column=2
androidlayout_width=150dp
androidlayout_height=40dp
gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltButton androidid=+idbtnAjouter
androidtext=stringajouter
androidlayout_column=1
androidlayout_width=100dp
androidlayout_height=40dp
gt
ltButton androidid=+idbtnSupprimer
androidtext=stringsupprimer
androidlayout_column=2
androidlayout_width=100dp
androidlayout_height=40dp
androidlayout_centerVertical=true
gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltButton androidid=+idbtnAfficher
11 Denis Brunet Saliha Yacoub
androidtext=stringafficher
androidlayout_column=1
androidlayout_width=100dp
androidlayout_height=40dp
gt
ltButton androidid=+idbtnAffichertout
androidtext=stringaffichertout
androidlayout_width=100dp
androidlayout_height=40dp
androidlayout_column=2 gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltButton androidid=+idbtnSuivant
androidtext=stringsuivant
androidlayout_column=1
androidlayout_width=100dp
androidlayout_height=40dp
gt
ltButton androidid=+idbtnPrcedent
androidtext=stringprecedent
androidlayout_width=100dp
androidlayout_height=40dp
androidlayout_column=2 gt
ltTableRowgt
12 Denis Brunet Saliha Yacoub
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltButton androidid=+idbtnPremier
androidtext=stringpremier
androidlayout_column=1
androidlayout_width=100dp
androidlayout_height=40dp
gt
ltTableRowgt
ltTableLayoutgt
ltRelativeLayoutgt
Contenu du fichier stringsxml
ltresourcesgt
ltstring name=app_namegtSqliteExempleltstringgt
ltstring name=NumgtNumeacutero ltstringgt
ltstring name=nomgtNom ltstringgt
ltstring name=prenomgtPrenom ltstringgt
ltstring name =ajoutergt Ajouterltstringgt
ltstring name =supprimergt Supprimerltstringgt
ltstring name =affichergt Afficherltstringgt
ltstring name =affichertoutgt ToutAfficherltstringgt
ltstring name =suivantgt Suivantltstringgt
ltstring name =precedentgt Precedentltstringgt
ltstring name =premiergt Premierltstringgt
ltresourcesgt
13 Denis Brunet Saliha Yacoub
Contenu MainActivityjava
package comexamplesalihayacoubsqliteexemple
import androidappActivity
import androidappAlertDialogBuilder
import androidcontentContext
import androiddatabaseCursor
import androiddatabasesqliteSQLiteDatabase
import androidosBundle
import androidviewView
import androidviewViewOnClickListener
import androidwidgetButton
import androidwidgetEditText
public class MainActivity extends Activity implements OnClickListener
Deacuteclarations
EditText edtNom edtPrenom edtNum
Button btnAfficher btnSupprimer btnAjouter btnAffichertout
Button btnSuivant btnPrcedent btnPremier
SQLiteDatabase bd
Cursor c1 utiliseacute par les boutons suivant et preacuteceacutedent
Override
public void onCreate(Bundle savedInstanceState)
superonCreate(savedInstanceState)
setContentView(Rlayoutactivity_main)
14 Denis Brunet Saliha Yacoub
edtNom = (EditText) findViewById(RidedtNom)
edtPrenom = (EditText) findViewById(RidedtPrenom)
edtNum = (EditText) findViewById(RidedtNum)
btnAjouter = (Button) findViewById(RidbtnAjouter)
btnSupprimer = (Button) findViewById(RidbtnSupprimer)
btnAfficher = (Button) findViewById(RidbtnAfficher)
btnAffichertout = (Button) findViewById(RidbtnAffichertout)
btnSuivant =(Button)findViewById(RidbtnSuivant)
btnPrecdent =(Button)findViewById(RidbtnPrcedent)
btnPremier =(Button)findViewById(RidbtnPremier)
btnAjoutersetOnClickListener(this)
btnSupprimersetOnClickListener(this)
btnAffichertoutsetOnClickListener(this)
btnSupprimersetOnClickListener(this)
btnAffichersetOnClickListener(this)
btnSuivantsetOnClickListener(this)
btnPrecdentsetOnClickListener(this)
btnPremiersetOnClickListener(this)
bd = openOrCreateDatabase(GestionJoueurs ContextMODE_PRIVATEnull)
bdexecSQL(CREATE TABLE IF NOT EXISTS Joueurs(num integer primary key autoincrement
nom VARCHARprenom VARCHAR))
public void onClick(View view)
15 Denis Brunet Saliha Yacoub
if(view==btnAjouter)
if(edtNomgetText()toString()trim()length()==0||
edtPrenomgetText()toString()trim()length()==0)
AfficheMessage(Erreur Entrer toutes les valeurs)
return
bdexecSQL(INSERT INTO joueurs(nomprenom) VALUES( + edtNomgetText() +
+ edtPrenomgetText() + ))
AfficheMessage(Succegraves Information ajouter)
videTexte()
fin bouton ajouter
---------------DeacutebutAfficher TOUT
if(view==btnAffichertout)
Cursor c=bdrawQuery(SELECT FROM Joueursnull)
if(cgetCount()==0)
AfficheMessage(Erreur Aucune donneacutee)
return
StringBuffer buffer=new StringBuffer()
while(cmoveToNext())
bufferappend(Numeacutero +cgetInt(0)+n)
bufferappend(Non +cgetString(1)+n)
bufferappend(Preacutenom +cgetString(2)+n)
16 Denis Brunet Saliha Yacoub
cclose()
AfficheMessage(Les joueurs buffertoString())
----fin afficher tout
Bouton supprimer
if(view==btnSupprimer)
if(edtNumgetText()toString()trim()length()==0)
AfficheMessage(Erreur Entrer un numeacutero de joueur)
return
Cursor c=bdrawQuery(SELECT FROM Joueurs WHERE num=+ edtNumgetText() null)
if(cmoveToFirst())
bdexecSQL(DELETE FROM Joueurs WHERE num= + edtNumgetText() )
AfficheMessage(Succegraves Information deacutetruite)
else
AfficheMessage(Erreur Numeacutero invalide)
videTexte()
fin supprimer
17 Denis Brunet Saliha Yacoub
Bouton afficher le premier
if(view==btnPremier)
try
c1 = bdrawQuery(SELECT FROM Joueurs null)
if (c1getCount() == 0)
AfficheMessage(Erreur Aucune donneacutee)
return
if(c1moveToFirst())
edtNomsetText(c1getString(1))
dtPrenomsetText(c1getString(2))
fin du try
catch(Exception se)
ToastmakeText(MainActivitythis message+ segetMessage()toString()
ToastLENGTH_LONG)show()
Fin du premier
bouton suivant
if(view ==btnSuivant)
if(c1moveToNext())
edtNomsetText(c1getString(1))
edtPrenomsetText(c1getString(2))
18 Denis Brunet Saliha Yacoub
bouton preacutecedent
if(view ==btnPrecdent)
if(c1moveToPrevious())
edtNomsetText(c1getString(1))
edtPrenomsetText(c1getString(2))
fin preacutecedent
Bouton afficher un Enregistrement
if(view==btnAfficher)
Cursor c = bdrawQuery(SELECT FROM Joueurs where num= + edtNumgetText()
null)
if (cgetCount() == 0)
AfficheMessage(Erreur Aucune donneacutee)
return
if(cmoveToFirst())
edtNomsetText(cgetString(1))
edtPrenomsetText(cgetString(2))
fin Afficher
Fin du onClick
19 Denis Brunet Saliha Yacoub
public void AfficheMessage(String titreString message)
Builder builder=new Builder(this)
buildersetCancelable(true)
buildersetTitle(titre)
buildersetMessage(message)
buildershow()
public void videTexte()
edtNumsetText()
edtNomsetText()
edtPrenomsetText()
fin
Sources
httpswwwsqliteorgquickstarthtml
Notes de cours de Denis Brunet
httpdeveloperandroidcomreferenceandroiddatabasesqliteSQLiteDatabasehtml
httpdeveloperandroidcomreferenceandroidcontentContexthtml
httpsopenclassroomscomcoursescreez-des-applications-pour-android
httpwwwuniv-orleansfrlifoMembersJean-FrancoisLalandeenseignementandroidcours-
androidpdf
20 Denis Brunet Saliha Yacoub
Travail final Partie 2
Pondeacuteration 8
Date de remise le 19 mai avant 16h10
1- Directement sur votre teacuteleacutephonetablette creacuteer la table circuits suivantes en utilisant
SQLite
Colonnes Types et contrainte
IdCircuit integer primary key autoincrement
VilleDepart Varchar
VilleArivee Varchar
Prix REAL
Duree integer
2- Creacuteer lrsquoapplication JDBC-Android qui permet
a Creacuteer la base de donneacutees
b Drsquoajouter un enregistrement
c De supprimer un enregistrement
d Rechercher un circuit selon la ville de deacutepart Srsquoil y a plusieurs circuits on doit
pouvoir se deacuteplacer drsquoun enregistrement agrave lrsquoautre par des boutons suivant et
preacutecedent
Important Le cours sur SQLite et Android sera preacutesenteacute le lundi 09 mai
7 Denis Brunet Saliha Yacoub
Contenu du fichier activity_mainxml
ltxml version=10 encoding=utf-8gt
ltRelativeLayout xmlnsandroid=httpschemasandroidcomapkresandroid
androidid=+idmyLayout
androidstretchColumns=0
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
8 Denis Brunet Saliha Yacoub
ltTableLayout
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltTextView androidtext=Gestion des joueurs
androidlayout_column=1
androidlayout_width=wrap_content
androidlayout_height=wrap_content
gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltTextView androidtext=stringNum
androidlayout_column=1
androidlayout_width=wrap_content
androidlayout_height=wrap_content
gt
ltEditText androidid=+idedtNum
androidinputType=number
androidlayout_column=2
androidlayout_width=150dp
androidlayout_height=40dp
gt
ltTableRowgt
9 Denis Brunet Saliha Yacoub
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltTextView androidtext=stringnom
androidlayout_column=1
androidlayout_width=wrap_content
androidlayout_height=wrap_content
gt
ltEditText androidid=+idedtNom
androidinputType=text
androidlayout_column=2
androidlayout_width=150dp
androidlayout_height=40dp
gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltTextView androidtext=stringprenom
androidlayout_column=1
androidlayout_width=wrap_content
androidlayout_height=wrap_content
gt
ltEditText androidid=+idedtPrenom
androidinputType=text
10 Denis Brunet Saliha Yacoub
androidlayout_column=2
androidlayout_width=150dp
androidlayout_height=40dp
gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltButton androidid=+idbtnAjouter
androidtext=stringajouter
androidlayout_column=1
androidlayout_width=100dp
androidlayout_height=40dp
gt
ltButton androidid=+idbtnSupprimer
androidtext=stringsupprimer
androidlayout_column=2
androidlayout_width=100dp
androidlayout_height=40dp
androidlayout_centerVertical=true
gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltButton androidid=+idbtnAfficher
11 Denis Brunet Saliha Yacoub
androidtext=stringafficher
androidlayout_column=1
androidlayout_width=100dp
androidlayout_height=40dp
gt
ltButton androidid=+idbtnAffichertout
androidtext=stringaffichertout
androidlayout_width=100dp
androidlayout_height=40dp
androidlayout_column=2 gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltButton androidid=+idbtnSuivant
androidtext=stringsuivant
androidlayout_column=1
androidlayout_width=100dp
androidlayout_height=40dp
gt
ltButton androidid=+idbtnPrcedent
androidtext=stringprecedent
androidlayout_width=100dp
androidlayout_height=40dp
androidlayout_column=2 gt
ltTableRowgt
12 Denis Brunet Saliha Yacoub
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltButton androidid=+idbtnPremier
androidtext=stringpremier
androidlayout_column=1
androidlayout_width=100dp
androidlayout_height=40dp
gt
ltTableRowgt
ltTableLayoutgt
ltRelativeLayoutgt
Contenu du fichier stringsxml
ltresourcesgt
ltstring name=app_namegtSqliteExempleltstringgt
ltstring name=NumgtNumeacutero ltstringgt
ltstring name=nomgtNom ltstringgt
ltstring name=prenomgtPrenom ltstringgt
ltstring name =ajoutergt Ajouterltstringgt
ltstring name =supprimergt Supprimerltstringgt
ltstring name =affichergt Afficherltstringgt
ltstring name =affichertoutgt ToutAfficherltstringgt
ltstring name =suivantgt Suivantltstringgt
ltstring name =precedentgt Precedentltstringgt
ltstring name =premiergt Premierltstringgt
ltresourcesgt
13 Denis Brunet Saliha Yacoub
Contenu MainActivityjava
package comexamplesalihayacoubsqliteexemple
import androidappActivity
import androidappAlertDialogBuilder
import androidcontentContext
import androiddatabaseCursor
import androiddatabasesqliteSQLiteDatabase
import androidosBundle
import androidviewView
import androidviewViewOnClickListener
import androidwidgetButton
import androidwidgetEditText
public class MainActivity extends Activity implements OnClickListener
Deacuteclarations
EditText edtNom edtPrenom edtNum
Button btnAfficher btnSupprimer btnAjouter btnAffichertout
Button btnSuivant btnPrcedent btnPremier
SQLiteDatabase bd
Cursor c1 utiliseacute par les boutons suivant et preacuteceacutedent
Override
public void onCreate(Bundle savedInstanceState)
superonCreate(savedInstanceState)
setContentView(Rlayoutactivity_main)
14 Denis Brunet Saliha Yacoub
edtNom = (EditText) findViewById(RidedtNom)
edtPrenom = (EditText) findViewById(RidedtPrenom)
edtNum = (EditText) findViewById(RidedtNum)
btnAjouter = (Button) findViewById(RidbtnAjouter)
btnSupprimer = (Button) findViewById(RidbtnSupprimer)
btnAfficher = (Button) findViewById(RidbtnAfficher)
btnAffichertout = (Button) findViewById(RidbtnAffichertout)
btnSuivant =(Button)findViewById(RidbtnSuivant)
btnPrecdent =(Button)findViewById(RidbtnPrcedent)
btnPremier =(Button)findViewById(RidbtnPremier)
btnAjoutersetOnClickListener(this)
btnSupprimersetOnClickListener(this)
btnAffichertoutsetOnClickListener(this)
btnSupprimersetOnClickListener(this)
btnAffichersetOnClickListener(this)
btnSuivantsetOnClickListener(this)
btnPrecdentsetOnClickListener(this)
btnPremiersetOnClickListener(this)
bd = openOrCreateDatabase(GestionJoueurs ContextMODE_PRIVATEnull)
bdexecSQL(CREATE TABLE IF NOT EXISTS Joueurs(num integer primary key autoincrement
nom VARCHARprenom VARCHAR))
public void onClick(View view)
15 Denis Brunet Saliha Yacoub
if(view==btnAjouter)
if(edtNomgetText()toString()trim()length()==0||
edtPrenomgetText()toString()trim()length()==0)
AfficheMessage(Erreur Entrer toutes les valeurs)
return
bdexecSQL(INSERT INTO joueurs(nomprenom) VALUES( + edtNomgetText() +
+ edtPrenomgetText() + ))
AfficheMessage(Succegraves Information ajouter)
videTexte()
fin bouton ajouter
---------------DeacutebutAfficher TOUT
if(view==btnAffichertout)
Cursor c=bdrawQuery(SELECT FROM Joueursnull)
if(cgetCount()==0)
AfficheMessage(Erreur Aucune donneacutee)
return
StringBuffer buffer=new StringBuffer()
while(cmoveToNext())
bufferappend(Numeacutero +cgetInt(0)+n)
bufferappend(Non +cgetString(1)+n)
bufferappend(Preacutenom +cgetString(2)+n)
16 Denis Brunet Saliha Yacoub
cclose()
AfficheMessage(Les joueurs buffertoString())
----fin afficher tout
Bouton supprimer
if(view==btnSupprimer)
if(edtNumgetText()toString()trim()length()==0)
AfficheMessage(Erreur Entrer un numeacutero de joueur)
return
Cursor c=bdrawQuery(SELECT FROM Joueurs WHERE num=+ edtNumgetText() null)
if(cmoveToFirst())
bdexecSQL(DELETE FROM Joueurs WHERE num= + edtNumgetText() )
AfficheMessage(Succegraves Information deacutetruite)
else
AfficheMessage(Erreur Numeacutero invalide)
videTexte()
fin supprimer
17 Denis Brunet Saliha Yacoub
Bouton afficher le premier
if(view==btnPremier)
try
c1 = bdrawQuery(SELECT FROM Joueurs null)
if (c1getCount() == 0)
AfficheMessage(Erreur Aucune donneacutee)
return
if(c1moveToFirst())
edtNomsetText(c1getString(1))
dtPrenomsetText(c1getString(2))
fin du try
catch(Exception se)
ToastmakeText(MainActivitythis message+ segetMessage()toString()
ToastLENGTH_LONG)show()
Fin du premier
bouton suivant
if(view ==btnSuivant)
if(c1moveToNext())
edtNomsetText(c1getString(1))
edtPrenomsetText(c1getString(2))
18 Denis Brunet Saliha Yacoub
bouton preacutecedent
if(view ==btnPrecdent)
if(c1moveToPrevious())
edtNomsetText(c1getString(1))
edtPrenomsetText(c1getString(2))
fin preacutecedent
Bouton afficher un Enregistrement
if(view==btnAfficher)
Cursor c = bdrawQuery(SELECT FROM Joueurs where num= + edtNumgetText()
null)
if (cgetCount() == 0)
AfficheMessage(Erreur Aucune donneacutee)
return
if(cmoveToFirst())
edtNomsetText(cgetString(1))
edtPrenomsetText(cgetString(2))
fin Afficher
Fin du onClick
19 Denis Brunet Saliha Yacoub
public void AfficheMessage(String titreString message)
Builder builder=new Builder(this)
buildersetCancelable(true)
buildersetTitle(titre)
buildersetMessage(message)
buildershow()
public void videTexte()
edtNumsetText()
edtNomsetText()
edtPrenomsetText()
fin
Sources
httpswwwsqliteorgquickstarthtml
Notes de cours de Denis Brunet
httpdeveloperandroidcomreferenceandroiddatabasesqliteSQLiteDatabasehtml
httpdeveloperandroidcomreferenceandroidcontentContexthtml
httpsopenclassroomscomcoursescreez-des-applications-pour-android
httpwwwuniv-orleansfrlifoMembersJean-FrancoisLalandeenseignementandroidcours-
androidpdf
20 Denis Brunet Saliha Yacoub
Travail final Partie 2
Pondeacuteration 8
Date de remise le 19 mai avant 16h10
1- Directement sur votre teacuteleacutephonetablette creacuteer la table circuits suivantes en utilisant
SQLite
Colonnes Types et contrainte
IdCircuit integer primary key autoincrement
VilleDepart Varchar
VilleArivee Varchar
Prix REAL
Duree integer
2- Creacuteer lrsquoapplication JDBC-Android qui permet
a Creacuteer la base de donneacutees
b Drsquoajouter un enregistrement
c De supprimer un enregistrement
d Rechercher un circuit selon la ville de deacutepart Srsquoil y a plusieurs circuits on doit
pouvoir se deacuteplacer drsquoun enregistrement agrave lrsquoautre par des boutons suivant et
preacutecedent
Important Le cours sur SQLite et Android sera preacutesenteacute le lundi 09 mai
8 Denis Brunet Saliha Yacoub
ltTableLayout
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltTextView androidtext=Gestion des joueurs
androidlayout_column=1
androidlayout_width=wrap_content
androidlayout_height=wrap_content
gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltTextView androidtext=stringNum
androidlayout_column=1
androidlayout_width=wrap_content
androidlayout_height=wrap_content
gt
ltEditText androidid=+idedtNum
androidinputType=number
androidlayout_column=2
androidlayout_width=150dp
androidlayout_height=40dp
gt
ltTableRowgt
9 Denis Brunet Saliha Yacoub
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltTextView androidtext=stringnom
androidlayout_column=1
androidlayout_width=wrap_content
androidlayout_height=wrap_content
gt
ltEditText androidid=+idedtNom
androidinputType=text
androidlayout_column=2
androidlayout_width=150dp
androidlayout_height=40dp
gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltTextView androidtext=stringprenom
androidlayout_column=1
androidlayout_width=wrap_content
androidlayout_height=wrap_content
gt
ltEditText androidid=+idedtPrenom
androidinputType=text
10 Denis Brunet Saliha Yacoub
androidlayout_column=2
androidlayout_width=150dp
androidlayout_height=40dp
gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltButton androidid=+idbtnAjouter
androidtext=stringajouter
androidlayout_column=1
androidlayout_width=100dp
androidlayout_height=40dp
gt
ltButton androidid=+idbtnSupprimer
androidtext=stringsupprimer
androidlayout_column=2
androidlayout_width=100dp
androidlayout_height=40dp
androidlayout_centerVertical=true
gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltButton androidid=+idbtnAfficher
11 Denis Brunet Saliha Yacoub
androidtext=stringafficher
androidlayout_column=1
androidlayout_width=100dp
androidlayout_height=40dp
gt
ltButton androidid=+idbtnAffichertout
androidtext=stringaffichertout
androidlayout_width=100dp
androidlayout_height=40dp
androidlayout_column=2 gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltButton androidid=+idbtnSuivant
androidtext=stringsuivant
androidlayout_column=1
androidlayout_width=100dp
androidlayout_height=40dp
gt
ltButton androidid=+idbtnPrcedent
androidtext=stringprecedent
androidlayout_width=100dp
androidlayout_height=40dp
androidlayout_column=2 gt
ltTableRowgt
12 Denis Brunet Saliha Yacoub
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltButton androidid=+idbtnPremier
androidtext=stringpremier
androidlayout_column=1
androidlayout_width=100dp
androidlayout_height=40dp
gt
ltTableRowgt
ltTableLayoutgt
ltRelativeLayoutgt
Contenu du fichier stringsxml
ltresourcesgt
ltstring name=app_namegtSqliteExempleltstringgt
ltstring name=NumgtNumeacutero ltstringgt
ltstring name=nomgtNom ltstringgt
ltstring name=prenomgtPrenom ltstringgt
ltstring name =ajoutergt Ajouterltstringgt
ltstring name =supprimergt Supprimerltstringgt
ltstring name =affichergt Afficherltstringgt
ltstring name =affichertoutgt ToutAfficherltstringgt
ltstring name =suivantgt Suivantltstringgt
ltstring name =precedentgt Precedentltstringgt
ltstring name =premiergt Premierltstringgt
ltresourcesgt
13 Denis Brunet Saliha Yacoub
Contenu MainActivityjava
package comexamplesalihayacoubsqliteexemple
import androidappActivity
import androidappAlertDialogBuilder
import androidcontentContext
import androiddatabaseCursor
import androiddatabasesqliteSQLiteDatabase
import androidosBundle
import androidviewView
import androidviewViewOnClickListener
import androidwidgetButton
import androidwidgetEditText
public class MainActivity extends Activity implements OnClickListener
Deacuteclarations
EditText edtNom edtPrenom edtNum
Button btnAfficher btnSupprimer btnAjouter btnAffichertout
Button btnSuivant btnPrcedent btnPremier
SQLiteDatabase bd
Cursor c1 utiliseacute par les boutons suivant et preacuteceacutedent
Override
public void onCreate(Bundle savedInstanceState)
superonCreate(savedInstanceState)
setContentView(Rlayoutactivity_main)
14 Denis Brunet Saliha Yacoub
edtNom = (EditText) findViewById(RidedtNom)
edtPrenom = (EditText) findViewById(RidedtPrenom)
edtNum = (EditText) findViewById(RidedtNum)
btnAjouter = (Button) findViewById(RidbtnAjouter)
btnSupprimer = (Button) findViewById(RidbtnSupprimer)
btnAfficher = (Button) findViewById(RidbtnAfficher)
btnAffichertout = (Button) findViewById(RidbtnAffichertout)
btnSuivant =(Button)findViewById(RidbtnSuivant)
btnPrecdent =(Button)findViewById(RidbtnPrcedent)
btnPremier =(Button)findViewById(RidbtnPremier)
btnAjoutersetOnClickListener(this)
btnSupprimersetOnClickListener(this)
btnAffichertoutsetOnClickListener(this)
btnSupprimersetOnClickListener(this)
btnAffichersetOnClickListener(this)
btnSuivantsetOnClickListener(this)
btnPrecdentsetOnClickListener(this)
btnPremiersetOnClickListener(this)
bd = openOrCreateDatabase(GestionJoueurs ContextMODE_PRIVATEnull)
bdexecSQL(CREATE TABLE IF NOT EXISTS Joueurs(num integer primary key autoincrement
nom VARCHARprenom VARCHAR))
public void onClick(View view)
15 Denis Brunet Saliha Yacoub
if(view==btnAjouter)
if(edtNomgetText()toString()trim()length()==0||
edtPrenomgetText()toString()trim()length()==0)
AfficheMessage(Erreur Entrer toutes les valeurs)
return
bdexecSQL(INSERT INTO joueurs(nomprenom) VALUES( + edtNomgetText() +
+ edtPrenomgetText() + ))
AfficheMessage(Succegraves Information ajouter)
videTexte()
fin bouton ajouter
---------------DeacutebutAfficher TOUT
if(view==btnAffichertout)
Cursor c=bdrawQuery(SELECT FROM Joueursnull)
if(cgetCount()==0)
AfficheMessage(Erreur Aucune donneacutee)
return
StringBuffer buffer=new StringBuffer()
while(cmoveToNext())
bufferappend(Numeacutero +cgetInt(0)+n)
bufferappend(Non +cgetString(1)+n)
bufferappend(Preacutenom +cgetString(2)+n)
16 Denis Brunet Saliha Yacoub
cclose()
AfficheMessage(Les joueurs buffertoString())
----fin afficher tout
Bouton supprimer
if(view==btnSupprimer)
if(edtNumgetText()toString()trim()length()==0)
AfficheMessage(Erreur Entrer un numeacutero de joueur)
return
Cursor c=bdrawQuery(SELECT FROM Joueurs WHERE num=+ edtNumgetText() null)
if(cmoveToFirst())
bdexecSQL(DELETE FROM Joueurs WHERE num= + edtNumgetText() )
AfficheMessage(Succegraves Information deacutetruite)
else
AfficheMessage(Erreur Numeacutero invalide)
videTexte()
fin supprimer
17 Denis Brunet Saliha Yacoub
Bouton afficher le premier
if(view==btnPremier)
try
c1 = bdrawQuery(SELECT FROM Joueurs null)
if (c1getCount() == 0)
AfficheMessage(Erreur Aucune donneacutee)
return
if(c1moveToFirst())
edtNomsetText(c1getString(1))
dtPrenomsetText(c1getString(2))
fin du try
catch(Exception se)
ToastmakeText(MainActivitythis message+ segetMessage()toString()
ToastLENGTH_LONG)show()
Fin du premier
bouton suivant
if(view ==btnSuivant)
if(c1moveToNext())
edtNomsetText(c1getString(1))
edtPrenomsetText(c1getString(2))
18 Denis Brunet Saliha Yacoub
bouton preacutecedent
if(view ==btnPrecdent)
if(c1moveToPrevious())
edtNomsetText(c1getString(1))
edtPrenomsetText(c1getString(2))
fin preacutecedent
Bouton afficher un Enregistrement
if(view==btnAfficher)
Cursor c = bdrawQuery(SELECT FROM Joueurs where num= + edtNumgetText()
null)
if (cgetCount() == 0)
AfficheMessage(Erreur Aucune donneacutee)
return
if(cmoveToFirst())
edtNomsetText(cgetString(1))
edtPrenomsetText(cgetString(2))
fin Afficher
Fin du onClick
19 Denis Brunet Saliha Yacoub
public void AfficheMessage(String titreString message)
Builder builder=new Builder(this)
buildersetCancelable(true)
buildersetTitle(titre)
buildersetMessage(message)
buildershow()
public void videTexte()
edtNumsetText()
edtNomsetText()
edtPrenomsetText()
fin
Sources
httpswwwsqliteorgquickstarthtml
Notes de cours de Denis Brunet
httpdeveloperandroidcomreferenceandroiddatabasesqliteSQLiteDatabasehtml
httpdeveloperandroidcomreferenceandroidcontentContexthtml
httpsopenclassroomscomcoursescreez-des-applications-pour-android
httpwwwuniv-orleansfrlifoMembersJean-FrancoisLalandeenseignementandroidcours-
androidpdf
20 Denis Brunet Saliha Yacoub
Travail final Partie 2
Pondeacuteration 8
Date de remise le 19 mai avant 16h10
1- Directement sur votre teacuteleacutephonetablette creacuteer la table circuits suivantes en utilisant
SQLite
Colonnes Types et contrainte
IdCircuit integer primary key autoincrement
VilleDepart Varchar
VilleArivee Varchar
Prix REAL
Duree integer
2- Creacuteer lrsquoapplication JDBC-Android qui permet
a Creacuteer la base de donneacutees
b Drsquoajouter un enregistrement
c De supprimer un enregistrement
d Rechercher un circuit selon la ville de deacutepart Srsquoil y a plusieurs circuits on doit
pouvoir se deacuteplacer drsquoun enregistrement agrave lrsquoautre par des boutons suivant et
preacutecedent
Important Le cours sur SQLite et Android sera preacutesenteacute le lundi 09 mai
9 Denis Brunet Saliha Yacoub
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltTextView androidtext=stringnom
androidlayout_column=1
androidlayout_width=wrap_content
androidlayout_height=wrap_content
gt
ltEditText androidid=+idedtNom
androidinputType=text
androidlayout_column=2
androidlayout_width=150dp
androidlayout_height=40dp
gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltTextView androidtext=stringprenom
androidlayout_column=1
androidlayout_width=wrap_content
androidlayout_height=wrap_content
gt
ltEditText androidid=+idedtPrenom
androidinputType=text
10 Denis Brunet Saliha Yacoub
androidlayout_column=2
androidlayout_width=150dp
androidlayout_height=40dp
gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltButton androidid=+idbtnAjouter
androidtext=stringajouter
androidlayout_column=1
androidlayout_width=100dp
androidlayout_height=40dp
gt
ltButton androidid=+idbtnSupprimer
androidtext=stringsupprimer
androidlayout_column=2
androidlayout_width=100dp
androidlayout_height=40dp
androidlayout_centerVertical=true
gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltButton androidid=+idbtnAfficher
11 Denis Brunet Saliha Yacoub
androidtext=stringafficher
androidlayout_column=1
androidlayout_width=100dp
androidlayout_height=40dp
gt
ltButton androidid=+idbtnAffichertout
androidtext=stringaffichertout
androidlayout_width=100dp
androidlayout_height=40dp
androidlayout_column=2 gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltButton androidid=+idbtnSuivant
androidtext=stringsuivant
androidlayout_column=1
androidlayout_width=100dp
androidlayout_height=40dp
gt
ltButton androidid=+idbtnPrcedent
androidtext=stringprecedent
androidlayout_width=100dp
androidlayout_height=40dp
androidlayout_column=2 gt
ltTableRowgt
12 Denis Brunet Saliha Yacoub
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltButton androidid=+idbtnPremier
androidtext=stringpremier
androidlayout_column=1
androidlayout_width=100dp
androidlayout_height=40dp
gt
ltTableRowgt
ltTableLayoutgt
ltRelativeLayoutgt
Contenu du fichier stringsxml
ltresourcesgt
ltstring name=app_namegtSqliteExempleltstringgt
ltstring name=NumgtNumeacutero ltstringgt
ltstring name=nomgtNom ltstringgt
ltstring name=prenomgtPrenom ltstringgt
ltstring name =ajoutergt Ajouterltstringgt
ltstring name =supprimergt Supprimerltstringgt
ltstring name =affichergt Afficherltstringgt
ltstring name =affichertoutgt ToutAfficherltstringgt
ltstring name =suivantgt Suivantltstringgt
ltstring name =precedentgt Precedentltstringgt
ltstring name =premiergt Premierltstringgt
ltresourcesgt
13 Denis Brunet Saliha Yacoub
Contenu MainActivityjava
package comexamplesalihayacoubsqliteexemple
import androidappActivity
import androidappAlertDialogBuilder
import androidcontentContext
import androiddatabaseCursor
import androiddatabasesqliteSQLiteDatabase
import androidosBundle
import androidviewView
import androidviewViewOnClickListener
import androidwidgetButton
import androidwidgetEditText
public class MainActivity extends Activity implements OnClickListener
Deacuteclarations
EditText edtNom edtPrenom edtNum
Button btnAfficher btnSupprimer btnAjouter btnAffichertout
Button btnSuivant btnPrcedent btnPremier
SQLiteDatabase bd
Cursor c1 utiliseacute par les boutons suivant et preacuteceacutedent
Override
public void onCreate(Bundle savedInstanceState)
superonCreate(savedInstanceState)
setContentView(Rlayoutactivity_main)
14 Denis Brunet Saliha Yacoub
edtNom = (EditText) findViewById(RidedtNom)
edtPrenom = (EditText) findViewById(RidedtPrenom)
edtNum = (EditText) findViewById(RidedtNum)
btnAjouter = (Button) findViewById(RidbtnAjouter)
btnSupprimer = (Button) findViewById(RidbtnSupprimer)
btnAfficher = (Button) findViewById(RidbtnAfficher)
btnAffichertout = (Button) findViewById(RidbtnAffichertout)
btnSuivant =(Button)findViewById(RidbtnSuivant)
btnPrecdent =(Button)findViewById(RidbtnPrcedent)
btnPremier =(Button)findViewById(RidbtnPremier)
btnAjoutersetOnClickListener(this)
btnSupprimersetOnClickListener(this)
btnAffichertoutsetOnClickListener(this)
btnSupprimersetOnClickListener(this)
btnAffichersetOnClickListener(this)
btnSuivantsetOnClickListener(this)
btnPrecdentsetOnClickListener(this)
btnPremiersetOnClickListener(this)
bd = openOrCreateDatabase(GestionJoueurs ContextMODE_PRIVATEnull)
bdexecSQL(CREATE TABLE IF NOT EXISTS Joueurs(num integer primary key autoincrement
nom VARCHARprenom VARCHAR))
public void onClick(View view)
15 Denis Brunet Saliha Yacoub
if(view==btnAjouter)
if(edtNomgetText()toString()trim()length()==0||
edtPrenomgetText()toString()trim()length()==0)
AfficheMessage(Erreur Entrer toutes les valeurs)
return
bdexecSQL(INSERT INTO joueurs(nomprenom) VALUES( + edtNomgetText() +
+ edtPrenomgetText() + ))
AfficheMessage(Succegraves Information ajouter)
videTexte()
fin bouton ajouter
---------------DeacutebutAfficher TOUT
if(view==btnAffichertout)
Cursor c=bdrawQuery(SELECT FROM Joueursnull)
if(cgetCount()==0)
AfficheMessage(Erreur Aucune donneacutee)
return
StringBuffer buffer=new StringBuffer()
while(cmoveToNext())
bufferappend(Numeacutero +cgetInt(0)+n)
bufferappend(Non +cgetString(1)+n)
bufferappend(Preacutenom +cgetString(2)+n)
16 Denis Brunet Saliha Yacoub
cclose()
AfficheMessage(Les joueurs buffertoString())
----fin afficher tout
Bouton supprimer
if(view==btnSupprimer)
if(edtNumgetText()toString()trim()length()==0)
AfficheMessage(Erreur Entrer un numeacutero de joueur)
return
Cursor c=bdrawQuery(SELECT FROM Joueurs WHERE num=+ edtNumgetText() null)
if(cmoveToFirst())
bdexecSQL(DELETE FROM Joueurs WHERE num= + edtNumgetText() )
AfficheMessage(Succegraves Information deacutetruite)
else
AfficheMessage(Erreur Numeacutero invalide)
videTexte()
fin supprimer
17 Denis Brunet Saliha Yacoub
Bouton afficher le premier
if(view==btnPremier)
try
c1 = bdrawQuery(SELECT FROM Joueurs null)
if (c1getCount() == 0)
AfficheMessage(Erreur Aucune donneacutee)
return
if(c1moveToFirst())
edtNomsetText(c1getString(1))
dtPrenomsetText(c1getString(2))
fin du try
catch(Exception se)
ToastmakeText(MainActivitythis message+ segetMessage()toString()
ToastLENGTH_LONG)show()
Fin du premier
bouton suivant
if(view ==btnSuivant)
if(c1moveToNext())
edtNomsetText(c1getString(1))
edtPrenomsetText(c1getString(2))
18 Denis Brunet Saliha Yacoub
bouton preacutecedent
if(view ==btnPrecdent)
if(c1moveToPrevious())
edtNomsetText(c1getString(1))
edtPrenomsetText(c1getString(2))
fin preacutecedent
Bouton afficher un Enregistrement
if(view==btnAfficher)
Cursor c = bdrawQuery(SELECT FROM Joueurs where num= + edtNumgetText()
null)
if (cgetCount() == 0)
AfficheMessage(Erreur Aucune donneacutee)
return
if(cmoveToFirst())
edtNomsetText(cgetString(1))
edtPrenomsetText(cgetString(2))
fin Afficher
Fin du onClick
19 Denis Brunet Saliha Yacoub
public void AfficheMessage(String titreString message)
Builder builder=new Builder(this)
buildersetCancelable(true)
buildersetTitle(titre)
buildersetMessage(message)
buildershow()
public void videTexte()
edtNumsetText()
edtNomsetText()
edtPrenomsetText()
fin
Sources
httpswwwsqliteorgquickstarthtml
Notes de cours de Denis Brunet
httpdeveloperandroidcomreferenceandroiddatabasesqliteSQLiteDatabasehtml
httpdeveloperandroidcomreferenceandroidcontentContexthtml
httpsopenclassroomscomcoursescreez-des-applications-pour-android
httpwwwuniv-orleansfrlifoMembersJean-FrancoisLalandeenseignementandroidcours-
androidpdf
20 Denis Brunet Saliha Yacoub
Travail final Partie 2
Pondeacuteration 8
Date de remise le 19 mai avant 16h10
1- Directement sur votre teacuteleacutephonetablette creacuteer la table circuits suivantes en utilisant
SQLite
Colonnes Types et contrainte
IdCircuit integer primary key autoincrement
VilleDepart Varchar
VilleArivee Varchar
Prix REAL
Duree integer
2- Creacuteer lrsquoapplication JDBC-Android qui permet
a Creacuteer la base de donneacutees
b Drsquoajouter un enregistrement
c De supprimer un enregistrement
d Rechercher un circuit selon la ville de deacutepart Srsquoil y a plusieurs circuits on doit
pouvoir se deacuteplacer drsquoun enregistrement agrave lrsquoautre par des boutons suivant et
preacutecedent
Important Le cours sur SQLite et Android sera preacutesenteacute le lundi 09 mai
10 Denis Brunet Saliha Yacoub
androidlayout_column=2
androidlayout_width=150dp
androidlayout_height=40dp
gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltButton androidid=+idbtnAjouter
androidtext=stringajouter
androidlayout_column=1
androidlayout_width=100dp
androidlayout_height=40dp
gt
ltButton androidid=+idbtnSupprimer
androidtext=stringsupprimer
androidlayout_column=2
androidlayout_width=100dp
androidlayout_height=40dp
androidlayout_centerVertical=true
gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltButton androidid=+idbtnAfficher
11 Denis Brunet Saliha Yacoub
androidtext=stringafficher
androidlayout_column=1
androidlayout_width=100dp
androidlayout_height=40dp
gt
ltButton androidid=+idbtnAffichertout
androidtext=stringaffichertout
androidlayout_width=100dp
androidlayout_height=40dp
androidlayout_column=2 gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltButton androidid=+idbtnSuivant
androidtext=stringsuivant
androidlayout_column=1
androidlayout_width=100dp
androidlayout_height=40dp
gt
ltButton androidid=+idbtnPrcedent
androidtext=stringprecedent
androidlayout_width=100dp
androidlayout_height=40dp
androidlayout_column=2 gt
ltTableRowgt
12 Denis Brunet Saliha Yacoub
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltButton androidid=+idbtnPremier
androidtext=stringpremier
androidlayout_column=1
androidlayout_width=100dp
androidlayout_height=40dp
gt
ltTableRowgt
ltTableLayoutgt
ltRelativeLayoutgt
Contenu du fichier stringsxml
ltresourcesgt
ltstring name=app_namegtSqliteExempleltstringgt
ltstring name=NumgtNumeacutero ltstringgt
ltstring name=nomgtNom ltstringgt
ltstring name=prenomgtPrenom ltstringgt
ltstring name =ajoutergt Ajouterltstringgt
ltstring name =supprimergt Supprimerltstringgt
ltstring name =affichergt Afficherltstringgt
ltstring name =affichertoutgt ToutAfficherltstringgt
ltstring name =suivantgt Suivantltstringgt
ltstring name =precedentgt Precedentltstringgt
ltstring name =premiergt Premierltstringgt
ltresourcesgt
13 Denis Brunet Saliha Yacoub
Contenu MainActivityjava
package comexamplesalihayacoubsqliteexemple
import androidappActivity
import androidappAlertDialogBuilder
import androidcontentContext
import androiddatabaseCursor
import androiddatabasesqliteSQLiteDatabase
import androidosBundle
import androidviewView
import androidviewViewOnClickListener
import androidwidgetButton
import androidwidgetEditText
public class MainActivity extends Activity implements OnClickListener
Deacuteclarations
EditText edtNom edtPrenom edtNum
Button btnAfficher btnSupprimer btnAjouter btnAffichertout
Button btnSuivant btnPrcedent btnPremier
SQLiteDatabase bd
Cursor c1 utiliseacute par les boutons suivant et preacuteceacutedent
Override
public void onCreate(Bundle savedInstanceState)
superonCreate(savedInstanceState)
setContentView(Rlayoutactivity_main)
14 Denis Brunet Saliha Yacoub
edtNom = (EditText) findViewById(RidedtNom)
edtPrenom = (EditText) findViewById(RidedtPrenom)
edtNum = (EditText) findViewById(RidedtNum)
btnAjouter = (Button) findViewById(RidbtnAjouter)
btnSupprimer = (Button) findViewById(RidbtnSupprimer)
btnAfficher = (Button) findViewById(RidbtnAfficher)
btnAffichertout = (Button) findViewById(RidbtnAffichertout)
btnSuivant =(Button)findViewById(RidbtnSuivant)
btnPrecdent =(Button)findViewById(RidbtnPrcedent)
btnPremier =(Button)findViewById(RidbtnPremier)
btnAjoutersetOnClickListener(this)
btnSupprimersetOnClickListener(this)
btnAffichertoutsetOnClickListener(this)
btnSupprimersetOnClickListener(this)
btnAffichersetOnClickListener(this)
btnSuivantsetOnClickListener(this)
btnPrecdentsetOnClickListener(this)
btnPremiersetOnClickListener(this)
bd = openOrCreateDatabase(GestionJoueurs ContextMODE_PRIVATEnull)
bdexecSQL(CREATE TABLE IF NOT EXISTS Joueurs(num integer primary key autoincrement
nom VARCHARprenom VARCHAR))
public void onClick(View view)
15 Denis Brunet Saliha Yacoub
if(view==btnAjouter)
if(edtNomgetText()toString()trim()length()==0||
edtPrenomgetText()toString()trim()length()==0)
AfficheMessage(Erreur Entrer toutes les valeurs)
return
bdexecSQL(INSERT INTO joueurs(nomprenom) VALUES( + edtNomgetText() +
+ edtPrenomgetText() + ))
AfficheMessage(Succegraves Information ajouter)
videTexte()
fin bouton ajouter
---------------DeacutebutAfficher TOUT
if(view==btnAffichertout)
Cursor c=bdrawQuery(SELECT FROM Joueursnull)
if(cgetCount()==0)
AfficheMessage(Erreur Aucune donneacutee)
return
StringBuffer buffer=new StringBuffer()
while(cmoveToNext())
bufferappend(Numeacutero +cgetInt(0)+n)
bufferappend(Non +cgetString(1)+n)
bufferappend(Preacutenom +cgetString(2)+n)
16 Denis Brunet Saliha Yacoub
cclose()
AfficheMessage(Les joueurs buffertoString())
----fin afficher tout
Bouton supprimer
if(view==btnSupprimer)
if(edtNumgetText()toString()trim()length()==0)
AfficheMessage(Erreur Entrer un numeacutero de joueur)
return
Cursor c=bdrawQuery(SELECT FROM Joueurs WHERE num=+ edtNumgetText() null)
if(cmoveToFirst())
bdexecSQL(DELETE FROM Joueurs WHERE num= + edtNumgetText() )
AfficheMessage(Succegraves Information deacutetruite)
else
AfficheMessage(Erreur Numeacutero invalide)
videTexte()
fin supprimer
17 Denis Brunet Saliha Yacoub
Bouton afficher le premier
if(view==btnPremier)
try
c1 = bdrawQuery(SELECT FROM Joueurs null)
if (c1getCount() == 0)
AfficheMessage(Erreur Aucune donneacutee)
return
if(c1moveToFirst())
edtNomsetText(c1getString(1))
dtPrenomsetText(c1getString(2))
fin du try
catch(Exception se)
ToastmakeText(MainActivitythis message+ segetMessage()toString()
ToastLENGTH_LONG)show()
Fin du premier
bouton suivant
if(view ==btnSuivant)
if(c1moveToNext())
edtNomsetText(c1getString(1))
edtPrenomsetText(c1getString(2))
18 Denis Brunet Saliha Yacoub
bouton preacutecedent
if(view ==btnPrecdent)
if(c1moveToPrevious())
edtNomsetText(c1getString(1))
edtPrenomsetText(c1getString(2))
fin preacutecedent
Bouton afficher un Enregistrement
if(view==btnAfficher)
Cursor c = bdrawQuery(SELECT FROM Joueurs where num= + edtNumgetText()
null)
if (cgetCount() == 0)
AfficheMessage(Erreur Aucune donneacutee)
return
if(cmoveToFirst())
edtNomsetText(cgetString(1))
edtPrenomsetText(cgetString(2))
fin Afficher
Fin du onClick
19 Denis Brunet Saliha Yacoub
public void AfficheMessage(String titreString message)
Builder builder=new Builder(this)
buildersetCancelable(true)
buildersetTitle(titre)
buildersetMessage(message)
buildershow()
public void videTexte()
edtNumsetText()
edtNomsetText()
edtPrenomsetText()
fin
Sources
httpswwwsqliteorgquickstarthtml
Notes de cours de Denis Brunet
httpdeveloperandroidcomreferenceandroiddatabasesqliteSQLiteDatabasehtml
httpdeveloperandroidcomreferenceandroidcontentContexthtml
httpsopenclassroomscomcoursescreez-des-applications-pour-android
httpwwwuniv-orleansfrlifoMembersJean-FrancoisLalandeenseignementandroidcours-
androidpdf
20 Denis Brunet Saliha Yacoub
Travail final Partie 2
Pondeacuteration 8
Date de remise le 19 mai avant 16h10
1- Directement sur votre teacuteleacutephonetablette creacuteer la table circuits suivantes en utilisant
SQLite
Colonnes Types et contrainte
IdCircuit integer primary key autoincrement
VilleDepart Varchar
VilleArivee Varchar
Prix REAL
Duree integer
2- Creacuteer lrsquoapplication JDBC-Android qui permet
a Creacuteer la base de donneacutees
b Drsquoajouter un enregistrement
c De supprimer un enregistrement
d Rechercher un circuit selon la ville de deacutepart Srsquoil y a plusieurs circuits on doit
pouvoir se deacuteplacer drsquoun enregistrement agrave lrsquoautre par des boutons suivant et
preacutecedent
Important Le cours sur SQLite et Android sera preacutesenteacute le lundi 09 mai
11 Denis Brunet Saliha Yacoub
androidtext=stringafficher
androidlayout_column=1
androidlayout_width=100dp
androidlayout_height=40dp
gt
ltButton androidid=+idbtnAffichertout
androidtext=stringaffichertout
androidlayout_width=100dp
androidlayout_height=40dp
androidlayout_column=2 gt
ltTableRowgt
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltButton androidid=+idbtnSuivant
androidtext=stringsuivant
androidlayout_column=1
androidlayout_width=100dp
androidlayout_height=40dp
gt
ltButton androidid=+idbtnPrcedent
androidtext=stringprecedent
androidlayout_width=100dp
androidlayout_height=40dp
androidlayout_column=2 gt
ltTableRowgt
12 Denis Brunet Saliha Yacoub
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltButton androidid=+idbtnPremier
androidtext=stringpremier
androidlayout_column=1
androidlayout_width=100dp
androidlayout_height=40dp
gt
ltTableRowgt
ltTableLayoutgt
ltRelativeLayoutgt
Contenu du fichier stringsxml
ltresourcesgt
ltstring name=app_namegtSqliteExempleltstringgt
ltstring name=NumgtNumeacutero ltstringgt
ltstring name=nomgtNom ltstringgt
ltstring name=prenomgtPrenom ltstringgt
ltstring name =ajoutergt Ajouterltstringgt
ltstring name =supprimergt Supprimerltstringgt
ltstring name =affichergt Afficherltstringgt
ltstring name =affichertoutgt ToutAfficherltstringgt
ltstring name =suivantgt Suivantltstringgt
ltstring name =precedentgt Precedentltstringgt
ltstring name =premiergt Premierltstringgt
ltresourcesgt
13 Denis Brunet Saliha Yacoub
Contenu MainActivityjava
package comexamplesalihayacoubsqliteexemple
import androidappActivity
import androidappAlertDialogBuilder
import androidcontentContext
import androiddatabaseCursor
import androiddatabasesqliteSQLiteDatabase
import androidosBundle
import androidviewView
import androidviewViewOnClickListener
import androidwidgetButton
import androidwidgetEditText
public class MainActivity extends Activity implements OnClickListener
Deacuteclarations
EditText edtNom edtPrenom edtNum
Button btnAfficher btnSupprimer btnAjouter btnAffichertout
Button btnSuivant btnPrcedent btnPremier
SQLiteDatabase bd
Cursor c1 utiliseacute par les boutons suivant et preacuteceacutedent
Override
public void onCreate(Bundle savedInstanceState)
superonCreate(savedInstanceState)
setContentView(Rlayoutactivity_main)
14 Denis Brunet Saliha Yacoub
edtNom = (EditText) findViewById(RidedtNom)
edtPrenom = (EditText) findViewById(RidedtPrenom)
edtNum = (EditText) findViewById(RidedtNum)
btnAjouter = (Button) findViewById(RidbtnAjouter)
btnSupprimer = (Button) findViewById(RidbtnSupprimer)
btnAfficher = (Button) findViewById(RidbtnAfficher)
btnAffichertout = (Button) findViewById(RidbtnAffichertout)
btnSuivant =(Button)findViewById(RidbtnSuivant)
btnPrecdent =(Button)findViewById(RidbtnPrcedent)
btnPremier =(Button)findViewById(RidbtnPremier)
btnAjoutersetOnClickListener(this)
btnSupprimersetOnClickListener(this)
btnAffichertoutsetOnClickListener(this)
btnSupprimersetOnClickListener(this)
btnAffichersetOnClickListener(this)
btnSuivantsetOnClickListener(this)
btnPrecdentsetOnClickListener(this)
btnPremiersetOnClickListener(this)
bd = openOrCreateDatabase(GestionJoueurs ContextMODE_PRIVATEnull)
bdexecSQL(CREATE TABLE IF NOT EXISTS Joueurs(num integer primary key autoincrement
nom VARCHARprenom VARCHAR))
public void onClick(View view)
15 Denis Brunet Saliha Yacoub
if(view==btnAjouter)
if(edtNomgetText()toString()trim()length()==0||
edtPrenomgetText()toString()trim()length()==0)
AfficheMessage(Erreur Entrer toutes les valeurs)
return
bdexecSQL(INSERT INTO joueurs(nomprenom) VALUES( + edtNomgetText() +
+ edtPrenomgetText() + ))
AfficheMessage(Succegraves Information ajouter)
videTexte()
fin bouton ajouter
---------------DeacutebutAfficher TOUT
if(view==btnAffichertout)
Cursor c=bdrawQuery(SELECT FROM Joueursnull)
if(cgetCount()==0)
AfficheMessage(Erreur Aucune donneacutee)
return
StringBuffer buffer=new StringBuffer()
while(cmoveToNext())
bufferappend(Numeacutero +cgetInt(0)+n)
bufferappend(Non +cgetString(1)+n)
bufferappend(Preacutenom +cgetString(2)+n)
16 Denis Brunet Saliha Yacoub
cclose()
AfficheMessage(Les joueurs buffertoString())
----fin afficher tout
Bouton supprimer
if(view==btnSupprimer)
if(edtNumgetText()toString()trim()length()==0)
AfficheMessage(Erreur Entrer un numeacutero de joueur)
return
Cursor c=bdrawQuery(SELECT FROM Joueurs WHERE num=+ edtNumgetText() null)
if(cmoveToFirst())
bdexecSQL(DELETE FROM Joueurs WHERE num= + edtNumgetText() )
AfficheMessage(Succegraves Information deacutetruite)
else
AfficheMessage(Erreur Numeacutero invalide)
videTexte()
fin supprimer
17 Denis Brunet Saliha Yacoub
Bouton afficher le premier
if(view==btnPremier)
try
c1 = bdrawQuery(SELECT FROM Joueurs null)
if (c1getCount() == 0)
AfficheMessage(Erreur Aucune donneacutee)
return
if(c1moveToFirst())
edtNomsetText(c1getString(1))
dtPrenomsetText(c1getString(2))
fin du try
catch(Exception se)
ToastmakeText(MainActivitythis message+ segetMessage()toString()
ToastLENGTH_LONG)show()
Fin du premier
bouton suivant
if(view ==btnSuivant)
if(c1moveToNext())
edtNomsetText(c1getString(1))
edtPrenomsetText(c1getString(2))
18 Denis Brunet Saliha Yacoub
bouton preacutecedent
if(view ==btnPrecdent)
if(c1moveToPrevious())
edtNomsetText(c1getString(1))
edtPrenomsetText(c1getString(2))
fin preacutecedent
Bouton afficher un Enregistrement
if(view==btnAfficher)
Cursor c = bdrawQuery(SELECT FROM Joueurs where num= + edtNumgetText()
null)
if (cgetCount() == 0)
AfficheMessage(Erreur Aucune donneacutee)
return
if(cmoveToFirst())
edtNomsetText(cgetString(1))
edtPrenomsetText(cgetString(2))
fin Afficher
Fin du onClick
19 Denis Brunet Saliha Yacoub
public void AfficheMessage(String titreString message)
Builder builder=new Builder(this)
buildersetCancelable(true)
buildersetTitle(titre)
buildersetMessage(message)
buildershow()
public void videTexte()
edtNumsetText()
edtNomsetText()
edtPrenomsetText()
fin
Sources
httpswwwsqliteorgquickstarthtml
Notes de cours de Denis Brunet
httpdeveloperandroidcomreferenceandroiddatabasesqliteSQLiteDatabasehtml
httpdeveloperandroidcomreferenceandroidcontentContexthtml
httpsopenclassroomscomcoursescreez-des-applications-pour-android
httpwwwuniv-orleansfrlifoMembersJean-FrancoisLalandeenseignementandroidcours-
androidpdf
20 Denis Brunet Saliha Yacoub
Travail final Partie 2
Pondeacuteration 8
Date de remise le 19 mai avant 16h10
1- Directement sur votre teacuteleacutephonetablette creacuteer la table circuits suivantes en utilisant
SQLite
Colonnes Types et contrainte
IdCircuit integer primary key autoincrement
VilleDepart Varchar
VilleArivee Varchar
Prix REAL
Duree integer
2- Creacuteer lrsquoapplication JDBC-Android qui permet
a Creacuteer la base de donneacutees
b Drsquoajouter un enregistrement
c De supprimer un enregistrement
d Rechercher un circuit selon la ville de deacutepart Srsquoil y a plusieurs circuits on doit
pouvoir se deacuteplacer drsquoun enregistrement agrave lrsquoautre par des boutons suivant et
preacutecedent
Important Le cours sur SQLite et Android sera preacutesenteacute le lundi 09 mai
12 Denis Brunet Saliha Yacoub
ltTableRow
androidlayout_width=fill_parent
androidlayout_height=fill_parentgt
ltButton androidid=+idbtnPremier
androidtext=stringpremier
androidlayout_column=1
androidlayout_width=100dp
androidlayout_height=40dp
gt
ltTableRowgt
ltTableLayoutgt
ltRelativeLayoutgt
Contenu du fichier stringsxml
ltresourcesgt
ltstring name=app_namegtSqliteExempleltstringgt
ltstring name=NumgtNumeacutero ltstringgt
ltstring name=nomgtNom ltstringgt
ltstring name=prenomgtPrenom ltstringgt
ltstring name =ajoutergt Ajouterltstringgt
ltstring name =supprimergt Supprimerltstringgt
ltstring name =affichergt Afficherltstringgt
ltstring name =affichertoutgt ToutAfficherltstringgt
ltstring name =suivantgt Suivantltstringgt
ltstring name =precedentgt Precedentltstringgt
ltstring name =premiergt Premierltstringgt
ltresourcesgt
13 Denis Brunet Saliha Yacoub
Contenu MainActivityjava
package comexamplesalihayacoubsqliteexemple
import androidappActivity
import androidappAlertDialogBuilder
import androidcontentContext
import androiddatabaseCursor
import androiddatabasesqliteSQLiteDatabase
import androidosBundle
import androidviewView
import androidviewViewOnClickListener
import androidwidgetButton
import androidwidgetEditText
public class MainActivity extends Activity implements OnClickListener
Deacuteclarations
EditText edtNom edtPrenom edtNum
Button btnAfficher btnSupprimer btnAjouter btnAffichertout
Button btnSuivant btnPrcedent btnPremier
SQLiteDatabase bd
Cursor c1 utiliseacute par les boutons suivant et preacuteceacutedent
Override
public void onCreate(Bundle savedInstanceState)
superonCreate(savedInstanceState)
setContentView(Rlayoutactivity_main)
14 Denis Brunet Saliha Yacoub
edtNom = (EditText) findViewById(RidedtNom)
edtPrenom = (EditText) findViewById(RidedtPrenom)
edtNum = (EditText) findViewById(RidedtNum)
btnAjouter = (Button) findViewById(RidbtnAjouter)
btnSupprimer = (Button) findViewById(RidbtnSupprimer)
btnAfficher = (Button) findViewById(RidbtnAfficher)
btnAffichertout = (Button) findViewById(RidbtnAffichertout)
btnSuivant =(Button)findViewById(RidbtnSuivant)
btnPrecdent =(Button)findViewById(RidbtnPrcedent)
btnPremier =(Button)findViewById(RidbtnPremier)
btnAjoutersetOnClickListener(this)
btnSupprimersetOnClickListener(this)
btnAffichertoutsetOnClickListener(this)
btnSupprimersetOnClickListener(this)
btnAffichersetOnClickListener(this)
btnSuivantsetOnClickListener(this)
btnPrecdentsetOnClickListener(this)
btnPremiersetOnClickListener(this)
bd = openOrCreateDatabase(GestionJoueurs ContextMODE_PRIVATEnull)
bdexecSQL(CREATE TABLE IF NOT EXISTS Joueurs(num integer primary key autoincrement
nom VARCHARprenom VARCHAR))
public void onClick(View view)
15 Denis Brunet Saliha Yacoub
if(view==btnAjouter)
if(edtNomgetText()toString()trim()length()==0||
edtPrenomgetText()toString()trim()length()==0)
AfficheMessage(Erreur Entrer toutes les valeurs)
return
bdexecSQL(INSERT INTO joueurs(nomprenom) VALUES( + edtNomgetText() +
+ edtPrenomgetText() + ))
AfficheMessage(Succegraves Information ajouter)
videTexte()
fin bouton ajouter
---------------DeacutebutAfficher TOUT
if(view==btnAffichertout)
Cursor c=bdrawQuery(SELECT FROM Joueursnull)
if(cgetCount()==0)
AfficheMessage(Erreur Aucune donneacutee)
return
StringBuffer buffer=new StringBuffer()
while(cmoveToNext())
bufferappend(Numeacutero +cgetInt(0)+n)
bufferappend(Non +cgetString(1)+n)
bufferappend(Preacutenom +cgetString(2)+n)
16 Denis Brunet Saliha Yacoub
cclose()
AfficheMessage(Les joueurs buffertoString())
----fin afficher tout
Bouton supprimer
if(view==btnSupprimer)
if(edtNumgetText()toString()trim()length()==0)
AfficheMessage(Erreur Entrer un numeacutero de joueur)
return
Cursor c=bdrawQuery(SELECT FROM Joueurs WHERE num=+ edtNumgetText() null)
if(cmoveToFirst())
bdexecSQL(DELETE FROM Joueurs WHERE num= + edtNumgetText() )
AfficheMessage(Succegraves Information deacutetruite)
else
AfficheMessage(Erreur Numeacutero invalide)
videTexte()
fin supprimer
17 Denis Brunet Saliha Yacoub
Bouton afficher le premier
if(view==btnPremier)
try
c1 = bdrawQuery(SELECT FROM Joueurs null)
if (c1getCount() == 0)
AfficheMessage(Erreur Aucune donneacutee)
return
if(c1moveToFirst())
edtNomsetText(c1getString(1))
dtPrenomsetText(c1getString(2))
fin du try
catch(Exception se)
ToastmakeText(MainActivitythis message+ segetMessage()toString()
ToastLENGTH_LONG)show()
Fin du premier
bouton suivant
if(view ==btnSuivant)
if(c1moveToNext())
edtNomsetText(c1getString(1))
edtPrenomsetText(c1getString(2))
18 Denis Brunet Saliha Yacoub
bouton preacutecedent
if(view ==btnPrecdent)
if(c1moveToPrevious())
edtNomsetText(c1getString(1))
edtPrenomsetText(c1getString(2))
fin preacutecedent
Bouton afficher un Enregistrement
if(view==btnAfficher)
Cursor c = bdrawQuery(SELECT FROM Joueurs where num= + edtNumgetText()
null)
if (cgetCount() == 0)
AfficheMessage(Erreur Aucune donneacutee)
return
if(cmoveToFirst())
edtNomsetText(cgetString(1))
edtPrenomsetText(cgetString(2))
fin Afficher
Fin du onClick
19 Denis Brunet Saliha Yacoub
public void AfficheMessage(String titreString message)
Builder builder=new Builder(this)
buildersetCancelable(true)
buildersetTitle(titre)
buildersetMessage(message)
buildershow()
public void videTexte()
edtNumsetText()
edtNomsetText()
edtPrenomsetText()
fin
Sources
httpswwwsqliteorgquickstarthtml
Notes de cours de Denis Brunet
httpdeveloperandroidcomreferenceandroiddatabasesqliteSQLiteDatabasehtml
httpdeveloperandroidcomreferenceandroidcontentContexthtml
httpsopenclassroomscomcoursescreez-des-applications-pour-android
httpwwwuniv-orleansfrlifoMembersJean-FrancoisLalandeenseignementandroidcours-
androidpdf
20 Denis Brunet Saliha Yacoub
Travail final Partie 2
Pondeacuteration 8
Date de remise le 19 mai avant 16h10
1- Directement sur votre teacuteleacutephonetablette creacuteer la table circuits suivantes en utilisant
SQLite
Colonnes Types et contrainte
IdCircuit integer primary key autoincrement
VilleDepart Varchar
VilleArivee Varchar
Prix REAL
Duree integer
2- Creacuteer lrsquoapplication JDBC-Android qui permet
a Creacuteer la base de donneacutees
b Drsquoajouter un enregistrement
c De supprimer un enregistrement
d Rechercher un circuit selon la ville de deacutepart Srsquoil y a plusieurs circuits on doit
pouvoir se deacuteplacer drsquoun enregistrement agrave lrsquoautre par des boutons suivant et
preacutecedent
Important Le cours sur SQLite et Android sera preacutesenteacute le lundi 09 mai
13 Denis Brunet Saliha Yacoub
Contenu MainActivityjava
package comexamplesalihayacoubsqliteexemple
import androidappActivity
import androidappAlertDialogBuilder
import androidcontentContext
import androiddatabaseCursor
import androiddatabasesqliteSQLiteDatabase
import androidosBundle
import androidviewView
import androidviewViewOnClickListener
import androidwidgetButton
import androidwidgetEditText
public class MainActivity extends Activity implements OnClickListener
Deacuteclarations
EditText edtNom edtPrenom edtNum
Button btnAfficher btnSupprimer btnAjouter btnAffichertout
Button btnSuivant btnPrcedent btnPremier
SQLiteDatabase bd
Cursor c1 utiliseacute par les boutons suivant et preacuteceacutedent
Override
public void onCreate(Bundle savedInstanceState)
superonCreate(savedInstanceState)
setContentView(Rlayoutactivity_main)
14 Denis Brunet Saliha Yacoub
edtNom = (EditText) findViewById(RidedtNom)
edtPrenom = (EditText) findViewById(RidedtPrenom)
edtNum = (EditText) findViewById(RidedtNum)
btnAjouter = (Button) findViewById(RidbtnAjouter)
btnSupprimer = (Button) findViewById(RidbtnSupprimer)
btnAfficher = (Button) findViewById(RidbtnAfficher)
btnAffichertout = (Button) findViewById(RidbtnAffichertout)
btnSuivant =(Button)findViewById(RidbtnSuivant)
btnPrecdent =(Button)findViewById(RidbtnPrcedent)
btnPremier =(Button)findViewById(RidbtnPremier)
btnAjoutersetOnClickListener(this)
btnSupprimersetOnClickListener(this)
btnAffichertoutsetOnClickListener(this)
btnSupprimersetOnClickListener(this)
btnAffichersetOnClickListener(this)
btnSuivantsetOnClickListener(this)
btnPrecdentsetOnClickListener(this)
btnPremiersetOnClickListener(this)
bd = openOrCreateDatabase(GestionJoueurs ContextMODE_PRIVATEnull)
bdexecSQL(CREATE TABLE IF NOT EXISTS Joueurs(num integer primary key autoincrement
nom VARCHARprenom VARCHAR))
public void onClick(View view)
15 Denis Brunet Saliha Yacoub
if(view==btnAjouter)
if(edtNomgetText()toString()trim()length()==0||
edtPrenomgetText()toString()trim()length()==0)
AfficheMessage(Erreur Entrer toutes les valeurs)
return
bdexecSQL(INSERT INTO joueurs(nomprenom) VALUES( + edtNomgetText() +
+ edtPrenomgetText() + ))
AfficheMessage(Succegraves Information ajouter)
videTexte()
fin bouton ajouter
---------------DeacutebutAfficher TOUT
if(view==btnAffichertout)
Cursor c=bdrawQuery(SELECT FROM Joueursnull)
if(cgetCount()==0)
AfficheMessage(Erreur Aucune donneacutee)
return
StringBuffer buffer=new StringBuffer()
while(cmoveToNext())
bufferappend(Numeacutero +cgetInt(0)+n)
bufferappend(Non +cgetString(1)+n)
bufferappend(Preacutenom +cgetString(2)+n)
16 Denis Brunet Saliha Yacoub
cclose()
AfficheMessage(Les joueurs buffertoString())
----fin afficher tout
Bouton supprimer
if(view==btnSupprimer)
if(edtNumgetText()toString()trim()length()==0)
AfficheMessage(Erreur Entrer un numeacutero de joueur)
return
Cursor c=bdrawQuery(SELECT FROM Joueurs WHERE num=+ edtNumgetText() null)
if(cmoveToFirst())
bdexecSQL(DELETE FROM Joueurs WHERE num= + edtNumgetText() )
AfficheMessage(Succegraves Information deacutetruite)
else
AfficheMessage(Erreur Numeacutero invalide)
videTexte()
fin supprimer
17 Denis Brunet Saliha Yacoub
Bouton afficher le premier
if(view==btnPremier)
try
c1 = bdrawQuery(SELECT FROM Joueurs null)
if (c1getCount() == 0)
AfficheMessage(Erreur Aucune donneacutee)
return
if(c1moveToFirst())
edtNomsetText(c1getString(1))
dtPrenomsetText(c1getString(2))
fin du try
catch(Exception se)
ToastmakeText(MainActivitythis message+ segetMessage()toString()
ToastLENGTH_LONG)show()
Fin du premier
bouton suivant
if(view ==btnSuivant)
if(c1moveToNext())
edtNomsetText(c1getString(1))
edtPrenomsetText(c1getString(2))
18 Denis Brunet Saliha Yacoub
bouton preacutecedent
if(view ==btnPrecdent)
if(c1moveToPrevious())
edtNomsetText(c1getString(1))
edtPrenomsetText(c1getString(2))
fin preacutecedent
Bouton afficher un Enregistrement
if(view==btnAfficher)
Cursor c = bdrawQuery(SELECT FROM Joueurs where num= + edtNumgetText()
null)
if (cgetCount() == 0)
AfficheMessage(Erreur Aucune donneacutee)
return
if(cmoveToFirst())
edtNomsetText(cgetString(1))
edtPrenomsetText(cgetString(2))
fin Afficher
Fin du onClick
19 Denis Brunet Saliha Yacoub
public void AfficheMessage(String titreString message)
Builder builder=new Builder(this)
buildersetCancelable(true)
buildersetTitle(titre)
buildersetMessage(message)
buildershow()
public void videTexte()
edtNumsetText()
edtNomsetText()
edtPrenomsetText()
fin
Sources
httpswwwsqliteorgquickstarthtml
Notes de cours de Denis Brunet
httpdeveloperandroidcomreferenceandroiddatabasesqliteSQLiteDatabasehtml
httpdeveloperandroidcomreferenceandroidcontentContexthtml
httpsopenclassroomscomcoursescreez-des-applications-pour-android
httpwwwuniv-orleansfrlifoMembersJean-FrancoisLalandeenseignementandroidcours-
androidpdf
20 Denis Brunet Saliha Yacoub
Travail final Partie 2
Pondeacuteration 8
Date de remise le 19 mai avant 16h10
1- Directement sur votre teacuteleacutephonetablette creacuteer la table circuits suivantes en utilisant
SQLite
Colonnes Types et contrainte
IdCircuit integer primary key autoincrement
VilleDepart Varchar
VilleArivee Varchar
Prix REAL
Duree integer
2- Creacuteer lrsquoapplication JDBC-Android qui permet
a Creacuteer la base de donneacutees
b Drsquoajouter un enregistrement
c De supprimer un enregistrement
d Rechercher un circuit selon la ville de deacutepart Srsquoil y a plusieurs circuits on doit
pouvoir se deacuteplacer drsquoun enregistrement agrave lrsquoautre par des boutons suivant et
preacutecedent
Important Le cours sur SQLite et Android sera preacutesenteacute le lundi 09 mai
14 Denis Brunet Saliha Yacoub
edtNom = (EditText) findViewById(RidedtNom)
edtPrenom = (EditText) findViewById(RidedtPrenom)
edtNum = (EditText) findViewById(RidedtNum)
btnAjouter = (Button) findViewById(RidbtnAjouter)
btnSupprimer = (Button) findViewById(RidbtnSupprimer)
btnAfficher = (Button) findViewById(RidbtnAfficher)
btnAffichertout = (Button) findViewById(RidbtnAffichertout)
btnSuivant =(Button)findViewById(RidbtnSuivant)
btnPrecdent =(Button)findViewById(RidbtnPrcedent)
btnPremier =(Button)findViewById(RidbtnPremier)
btnAjoutersetOnClickListener(this)
btnSupprimersetOnClickListener(this)
btnAffichertoutsetOnClickListener(this)
btnSupprimersetOnClickListener(this)
btnAffichersetOnClickListener(this)
btnSuivantsetOnClickListener(this)
btnPrecdentsetOnClickListener(this)
btnPremiersetOnClickListener(this)
bd = openOrCreateDatabase(GestionJoueurs ContextMODE_PRIVATEnull)
bdexecSQL(CREATE TABLE IF NOT EXISTS Joueurs(num integer primary key autoincrement
nom VARCHARprenom VARCHAR))
public void onClick(View view)
15 Denis Brunet Saliha Yacoub
if(view==btnAjouter)
if(edtNomgetText()toString()trim()length()==0||
edtPrenomgetText()toString()trim()length()==0)
AfficheMessage(Erreur Entrer toutes les valeurs)
return
bdexecSQL(INSERT INTO joueurs(nomprenom) VALUES( + edtNomgetText() +
+ edtPrenomgetText() + ))
AfficheMessage(Succegraves Information ajouter)
videTexte()
fin bouton ajouter
---------------DeacutebutAfficher TOUT
if(view==btnAffichertout)
Cursor c=bdrawQuery(SELECT FROM Joueursnull)
if(cgetCount()==0)
AfficheMessage(Erreur Aucune donneacutee)
return
StringBuffer buffer=new StringBuffer()
while(cmoveToNext())
bufferappend(Numeacutero +cgetInt(0)+n)
bufferappend(Non +cgetString(1)+n)
bufferappend(Preacutenom +cgetString(2)+n)
16 Denis Brunet Saliha Yacoub
cclose()
AfficheMessage(Les joueurs buffertoString())
----fin afficher tout
Bouton supprimer
if(view==btnSupprimer)
if(edtNumgetText()toString()trim()length()==0)
AfficheMessage(Erreur Entrer un numeacutero de joueur)
return
Cursor c=bdrawQuery(SELECT FROM Joueurs WHERE num=+ edtNumgetText() null)
if(cmoveToFirst())
bdexecSQL(DELETE FROM Joueurs WHERE num= + edtNumgetText() )
AfficheMessage(Succegraves Information deacutetruite)
else
AfficheMessage(Erreur Numeacutero invalide)
videTexte()
fin supprimer
17 Denis Brunet Saliha Yacoub
Bouton afficher le premier
if(view==btnPremier)
try
c1 = bdrawQuery(SELECT FROM Joueurs null)
if (c1getCount() == 0)
AfficheMessage(Erreur Aucune donneacutee)
return
if(c1moveToFirst())
edtNomsetText(c1getString(1))
dtPrenomsetText(c1getString(2))
fin du try
catch(Exception se)
ToastmakeText(MainActivitythis message+ segetMessage()toString()
ToastLENGTH_LONG)show()
Fin du premier
bouton suivant
if(view ==btnSuivant)
if(c1moveToNext())
edtNomsetText(c1getString(1))
edtPrenomsetText(c1getString(2))
18 Denis Brunet Saliha Yacoub
bouton preacutecedent
if(view ==btnPrecdent)
if(c1moveToPrevious())
edtNomsetText(c1getString(1))
edtPrenomsetText(c1getString(2))
fin preacutecedent
Bouton afficher un Enregistrement
if(view==btnAfficher)
Cursor c = bdrawQuery(SELECT FROM Joueurs where num= + edtNumgetText()
null)
if (cgetCount() == 0)
AfficheMessage(Erreur Aucune donneacutee)
return
if(cmoveToFirst())
edtNomsetText(cgetString(1))
edtPrenomsetText(cgetString(2))
fin Afficher
Fin du onClick
19 Denis Brunet Saliha Yacoub
public void AfficheMessage(String titreString message)
Builder builder=new Builder(this)
buildersetCancelable(true)
buildersetTitle(titre)
buildersetMessage(message)
buildershow()
public void videTexte()
edtNumsetText()
edtNomsetText()
edtPrenomsetText()
fin
Sources
httpswwwsqliteorgquickstarthtml
Notes de cours de Denis Brunet
httpdeveloperandroidcomreferenceandroiddatabasesqliteSQLiteDatabasehtml
httpdeveloperandroidcomreferenceandroidcontentContexthtml
httpsopenclassroomscomcoursescreez-des-applications-pour-android
httpwwwuniv-orleansfrlifoMembersJean-FrancoisLalandeenseignementandroidcours-
androidpdf
20 Denis Brunet Saliha Yacoub
Travail final Partie 2
Pondeacuteration 8
Date de remise le 19 mai avant 16h10
1- Directement sur votre teacuteleacutephonetablette creacuteer la table circuits suivantes en utilisant
SQLite
Colonnes Types et contrainte
IdCircuit integer primary key autoincrement
VilleDepart Varchar
VilleArivee Varchar
Prix REAL
Duree integer
2- Creacuteer lrsquoapplication JDBC-Android qui permet
a Creacuteer la base de donneacutees
b Drsquoajouter un enregistrement
c De supprimer un enregistrement
d Rechercher un circuit selon la ville de deacutepart Srsquoil y a plusieurs circuits on doit
pouvoir se deacuteplacer drsquoun enregistrement agrave lrsquoautre par des boutons suivant et
preacutecedent
Important Le cours sur SQLite et Android sera preacutesenteacute le lundi 09 mai
15 Denis Brunet Saliha Yacoub
if(view==btnAjouter)
if(edtNomgetText()toString()trim()length()==0||
edtPrenomgetText()toString()trim()length()==0)
AfficheMessage(Erreur Entrer toutes les valeurs)
return
bdexecSQL(INSERT INTO joueurs(nomprenom) VALUES( + edtNomgetText() +
+ edtPrenomgetText() + ))
AfficheMessage(Succegraves Information ajouter)
videTexte()
fin bouton ajouter
---------------DeacutebutAfficher TOUT
if(view==btnAffichertout)
Cursor c=bdrawQuery(SELECT FROM Joueursnull)
if(cgetCount()==0)
AfficheMessage(Erreur Aucune donneacutee)
return
StringBuffer buffer=new StringBuffer()
while(cmoveToNext())
bufferappend(Numeacutero +cgetInt(0)+n)
bufferappend(Non +cgetString(1)+n)
bufferappend(Preacutenom +cgetString(2)+n)
16 Denis Brunet Saliha Yacoub
cclose()
AfficheMessage(Les joueurs buffertoString())
----fin afficher tout
Bouton supprimer
if(view==btnSupprimer)
if(edtNumgetText()toString()trim()length()==0)
AfficheMessage(Erreur Entrer un numeacutero de joueur)
return
Cursor c=bdrawQuery(SELECT FROM Joueurs WHERE num=+ edtNumgetText() null)
if(cmoveToFirst())
bdexecSQL(DELETE FROM Joueurs WHERE num= + edtNumgetText() )
AfficheMessage(Succegraves Information deacutetruite)
else
AfficheMessage(Erreur Numeacutero invalide)
videTexte()
fin supprimer
17 Denis Brunet Saliha Yacoub
Bouton afficher le premier
if(view==btnPremier)
try
c1 = bdrawQuery(SELECT FROM Joueurs null)
if (c1getCount() == 0)
AfficheMessage(Erreur Aucune donneacutee)
return
if(c1moveToFirst())
edtNomsetText(c1getString(1))
dtPrenomsetText(c1getString(2))
fin du try
catch(Exception se)
ToastmakeText(MainActivitythis message+ segetMessage()toString()
ToastLENGTH_LONG)show()
Fin du premier
bouton suivant
if(view ==btnSuivant)
if(c1moveToNext())
edtNomsetText(c1getString(1))
edtPrenomsetText(c1getString(2))
18 Denis Brunet Saliha Yacoub
bouton preacutecedent
if(view ==btnPrecdent)
if(c1moveToPrevious())
edtNomsetText(c1getString(1))
edtPrenomsetText(c1getString(2))
fin preacutecedent
Bouton afficher un Enregistrement
if(view==btnAfficher)
Cursor c = bdrawQuery(SELECT FROM Joueurs where num= + edtNumgetText()
null)
if (cgetCount() == 0)
AfficheMessage(Erreur Aucune donneacutee)
return
if(cmoveToFirst())
edtNomsetText(cgetString(1))
edtPrenomsetText(cgetString(2))
fin Afficher
Fin du onClick
19 Denis Brunet Saliha Yacoub
public void AfficheMessage(String titreString message)
Builder builder=new Builder(this)
buildersetCancelable(true)
buildersetTitle(titre)
buildersetMessage(message)
buildershow()
public void videTexte()
edtNumsetText()
edtNomsetText()
edtPrenomsetText()
fin
Sources
httpswwwsqliteorgquickstarthtml
Notes de cours de Denis Brunet
httpdeveloperandroidcomreferenceandroiddatabasesqliteSQLiteDatabasehtml
httpdeveloperandroidcomreferenceandroidcontentContexthtml
httpsopenclassroomscomcoursescreez-des-applications-pour-android
httpwwwuniv-orleansfrlifoMembersJean-FrancoisLalandeenseignementandroidcours-
androidpdf
20 Denis Brunet Saliha Yacoub
Travail final Partie 2
Pondeacuteration 8
Date de remise le 19 mai avant 16h10
1- Directement sur votre teacuteleacutephonetablette creacuteer la table circuits suivantes en utilisant
SQLite
Colonnes Types et contrainte
IdCircuit integer primary key autoincrement
VilleDepart Varchar
VilleArivee Varchar
Prix REAL
Duree integer
2- Creacuteer lrsquoapplication JDBC-Android qui permet
a Creacuteer la base de donneacutees
b Drsquoajouter un enregistrement
c De supprimer un enregistrement
d Rechercher un circuit selon la ville de deacutepart Srsquoil y a plusieurs circuits on doit
pouvoir se deacuteplacer drsquoun enregistrement agrave lrsquoautre par des boutons suivant et
preacutecedent
Important Le cours sur SQLite et Android sera preacutesenteacute le lundi 09 mai
16 Denis Brunet Saliha Yacoub
cclose()
AfficheMessage(Les joueurs buffertoString())
----fin afficher tout
Bouton supprimer
if(view==btnSupprimer)
if(edtNumgetText()toString()trim()length()==0)
AfficheMessage(Erreur Entrer un numeacutero de joueur)
return
Cursor c=bdrawQuery(SELECT FROM Joueurs WHERE num=+ edtNumgetText() null)
if(cmoveToFirst())
bdexecSQL(DELETE FROM Joueurs WHERE num= + edtNumgetText() )
AfficheMessage(Succegraves Information deacutetruite)
else
AfficheMessage(Erreur Numeacutero invalide)
videTexte()
fin supprimer
17 Denis Brunet Saliha Yacoub
Bouton afficher le premier
if(view==btnPremier)
try
c1 = bdrawQuery(SELECT FROM Joueurs null)
if (c1getCount() == 0)
AfficheMessage(Erreur Aucune donneacutee)
return
if(c1moveToFirst())
edtNomsetText(c1getString(1))
dtPrenomsetText(c1getString(2))
fin du try
catch(Exception se)
ToastmakeText(MainActivitythis message+ segetMessage()toString()
ToastLENGTH_LONG)show()
Fin du premier
bouton suivant
if(view ==btnSuivant)
if(c1moveToNext())
edtNomsetText(c1getString(1))
edtPrenomsetText(c1getString(2))
18 Denis Brunet Saliha Yacoub
bouton preacutecedent
if(view ==btnPrecdent)
if(c1moveToPrevious())
edtNomsetText(c1getString(1))
edtPrenomsetText(c1getString(2))
fin preacutecedent
Bouton afficher un Enregistrement
if(view==btnAfficher)
Cursor c = bdrawQuery(SELECT FROM Joueurs where num= + edtNumgetText()
null)
if (cgetCount() == 0)
AfficheMessage(Erreur Aucune donneacutee)
return
if(cmoveToFirst())
edtNomsetText(cgetString(1))
edtPrenomsetText(cgetString(2))
fin Afficher
Fin du onClick
19 Denis Brunet Saliha Yacoub
public void AfficheMessage(String titreString message)
Builder builder=new Builder(this)
buildersetCancelable(true)
buildersetTitle(titre)
buildersetMessage(message)
buildershow()
public void videTexte()
edtNumsetText()
edtNomsetText()
edtPrenomsetText()
fin
Sources
httpswwwsqliteorgquickstarthtml
Notes de cours de Denis Brunet
httpdeveloperandroidcomreferenceandroiddatabasesqliteSQLiteDatabasehtml
httpdeveloperandroidcomreferenceandroidcontentContexthtml
httpsopenclassroomscomcoursescreez-des-applications-pour-android
httpwwwuniv-orleansfrlifoMembersJean-FrancoisLalandeenseignementandroidcours-
androidpdf
20 Denis Brunet Saliha Yacoub
Travail final Partie 2
Pondeacuteration 8
Date de remise le 19 mai avant 16h10
1- Directement sur votre teacuteleacutephonetablette creacuteer la table circuits suivantes en utilisant
SQLite
Colonnes Types et contrainte
IdCircuit integer primary key autoincrement
VilleDepart Varchar
VilleArivee Varchar
Prix REAL
Duree integer
2- Creacuteer lrsquoapplication JDBC-Android qui permet
a Creacuteer la base de donneacutees
b Drsquoajouter un enregistrement
c De supprimer un enregistrement
d Rechercher un circuit selon la ville de deacutepart Srsquoil y a plusieurs circuits on doit
pouvoir se deacuteplacer drsquoun enregistrement agrave lrsquoautre par des boutons suivant et
preacutecedent
Important Le cours sur SQLite et Android sera preacutesenteacute le lundi 09 mai
17 Denis Brunet Saliha Yacoub
Bouton afficher le premier
if(view==btnPremier)
try
c1 = bdrawQuery(SELECT FROM Joueurs null)
if (c1getCount() == 0)
AfficheMessage(Erreur Aucune donneacutee)
return
if(c1moveToFirst())
edtNomsetText(c1getString(1))
dtPrenomsetText(c1getString(2))
fin du try
catch(Exception se)
ToastmakeText(MainActivitythis message+ segetMessage()toString()
ToastLENGTH_LONG)show()
Fin du premier
bouton suivant
if(view ==btnSuivant)
if(c1moveToNext())
edtNomsetText(c1getString(1))
edtPrenomsetText(c1getString(2))
18 Denis Brunet Saliha Yacoub
bouton preacutecedent
if(view ==btnPrecdent)
if(c1moveToPrevious())
edtNomsetText(c1getString(1))
edtPrenomsetText(c1getString(2))
fin preacutecedent
Bouton afficher un Enregistrement
if(view==btnAfficher)
Cursor c = bdrawQuery(SELECT FROM Joueurs where num= + edtNumgetText()
null)
if (cgetCount() == 0)
AfficheMessage(Erreur Aucune donneacutee)
return
if(cmoveToFirst())
edtNomsetText(cgetString(1))
edtPrenomsetText(cgetString(2))
fin Afficher
Fin du onClick
19 Denis Brunet Saliha Yacoub
public void AfficheMessage(String titreString message)
Builder builder=new Builder(this)
buildersetCancelable(true)
buildersetTitle(titre)
buildersetMessage(message)
buildershow()
public void videTexte()
edtNumsetText()
edtNomsetText()
edtPrenomsetText()
fin
Sources
httpswwwsqliteorgquickstarthtml
Notes de cours de Denis Brunet
httpdeveloperandroidcomreferenceandroiddatabasesqliteSQLiteDatabasehtml
httpdeveloperandroidcomreferenceandroidcontentContexthtml
httpsopenclassroomscomcoursescreez-des-applications-pour-android
httpwwwuniv-orleansfrlifoMembersJean-FrancoisLalandeenseignementandroidcours-
androidpdf
20 Denis Brunet Saliha Yacoub
Travail final Partie 2
Pondeacuteration 8
Date de remise le 19 mai avant 16h10
1- Directement sur votre teacuteleacutephonetablette creacuteer la table circuits suivantes en utilisant
SQLite
Colonnes Types et contrainte
IdCircuit integer primary key autoincrement
VilleDepart Varchar
VilleArivee Varchar
Prix REAL
Duree integer
2- Creacuteer lrsquoapplication JDBC-Android qui permet
a Creacuteer la base de donneacutees
b Drsquoajouter un enregistrement
c De supprimer un enregistrement
d Rechercher un circuit selon la ville de deacutepart Srsquoil y a plusieurs circuits on doit
pouvoir se deacuteplacer drsquoun enregistrement agrave lrsquoautre par des boutons suivant et
preacutecedent
Important Le cours sur SQLite et Android sera preacutesenteacute le lundi 09 mai
18 Denis Brunet Saliha Yacoub
bouton preacutecedent
if(view ==btnPrecdent)
if(c1moveToPrevious())
edtNomsetText(c1getString(1))
edtPrenomsetText(c1getString(2))
fin preacutecedent
Bouton afficher un Enregistrement
if(view==btnAfficher)
Cursor c = bdrawQuery(SELECT FROM Joueurs where num= + edtNumgetText()
null)
if (cgetCount() == 0)
AfficheMessage(Erreur Aucune donneacutee)
return
if(cmoveToFirst())
edtNomsetText(cgetString(1))
edtPrenomsetText(cgetString(2))
fin Afficher
Fin du onClick
19 Denis Brunet Saliha Yacoub
public void AfficheMessage(String titreString message)
Builder builder=new Builder(this)
buildersetCancelable(true)
buildersetTitle(titre)
buildersetMessage(message)
buildershow()
public void videTexte()
edtNumsetText()
edtNomsetText()
edtPrenomsetText()
fin
Sources
httpswwwsqliteorgquickstarthtml
Notes de cours de Denis Brunet
httpdeveloperandroidcomreferenceandroiddatabasesqliteSQLiteDatabasehtml
httpdeveloperandroidcomreferenceandroidcontentContexthtml
httpsopenclassroomscomcoursescreez-des-applications-pour-android
httpwwwuniv-orleansfrlifoMembersJean-FrancoisLalandeenseignementandroidcours-
androidpdf
20 Denis Brunet Saliha Yacoub
Travail final Partie 2
Pondeacuteration 8
Date de remise le 19 mai avant 16h10
1- Directement sur votre teacuteleacutephonetablette creacuteer la table circuits suivantes en utilisant
SQLite
Colonnes Types et contrainte
IdCircuit integer primary key autoincrement
VilleDepart Varchar
VilleArivee Varchar
Prix REAL
Duree integer
2- Creacuteer lrsquoapplication JDBC-Android qui permet
a Creacuteer la base de donneacutees
b Drsquoajouter un enregistrement
c De supprimer un enregistrement
d Rechercher un circuit selon la ville de deacutepart Srsquoil y a plusieurs circuits on doit
pouvoir se deacuteplacer drsquoun enregistrement agrave lrsquoautre par des boutons suivant et
preacutecedent
Important Le cours sur SQLite et Android sera preacutesenteacute le lundi 09 mai
19 Denis Brunet Saliha Yacoub
public void AfficheMessage(String titreString message)
Builder builder=new Builder(this)
buildersetCancelable(true)
buildersetTitle(titre)
buildersetMessage(message)
buildershow()
public void videTexte()
edtNumsetText()
edtNomsetText()
edtPrenomsetText()
fin
Sources
httpswwwsqliteorgquickstarthtml
Notes de cours de Denis Brunet
httpdeveloperandroidcomreferenceandroiddatabasesqliteSQLiteDatabasehtml
httpdeveloperandroidcomreferenceandroidcontentContexthtml
httpsopenclassroomscomcoursescreez-des-applications-pour-android
httpwwwuniv-orleansfrlifoMembersJean-FrancoisLalandeenseignementandroidcours-
androidpdf
20 Denis Brunet Saliha Yacoub
Travail final Partie 2
Pondeacuteration 8
Date de remise le 19 mai avant 16h10
1- Directement sur votre teacuteleacutephonetablette creacuteer la table circuits suivantes en utilisant
SQLite
Colonnes Types et contrainte
IdCircuit integer primary key autoincrement
VilleDepart Varchar
VilleArivee Varchar
Prix REAL
Duree integer
2- Creacuteer lrsquoapplication JDBC-Android qui permet
a Creacuteer la base de donneacutees
b Drsquoajouter un enregistrement
c De supprimer un enregistrement
d Rechercher un circuit selon la ville de deacutepart Srsquoil y a plusieurs circuits on doit
pouvoir se deacuteplacer drsquoun enregistrement agrave lrsquoautre par des boutons suivant et
preacutecedent
Important Le cours sur SQLite et Android sera preacutesenteacute le lundi 09 mai
20 Denis Brunet Saliha Yacoub
Travail final Partie 2
Pondeacuteration 8
Date de remise le 19 mai avant 16h10
1- Directement sur votre teacuteleacutephonetablette creacuteer la table circuits suivantes en utilisant
SQLite
Colonnes Types et contrainte
IdCircuit integer primary key autoincrement
VilleDepart Varchar
VilleArivee Varchar
Prix REAL
Duree integer
2- Creacuteer lrsquoapplication JDBC-Android qui permet
a Creacuteer la base de donneacutees
b Drsquoajouter un enregistrement
c De supprimer un enregistrement
d Rechercher un circuit selon la ville de deacutepart Srsquoil y a plusieurs circuits on doit
pouvoir se deacuteplacer drsquoun enregistrement agrave lrsquoautre par des boutons suivant et
preacutecedent
Important Le cours sur SQLite et Android sera preacutesenteacute le lundi 09 mai