In this lab, you will learn how to create and use DB in Android using SQLite.
Remember:Create an app with one activity. Add two EditText fields (PlainText in the UI views in the xml layout) where the user can type and a button to add the text in a DB. Also add a TextView that we will use to display the contents of the DB.
Create a class to help you manage your DB (you can call it DBHelper) that extends SQLiteOpenHelper. You'll need to implement a constructor that takes as input a Context (this will be the activity that calls it) as well as an onCreate and onUpgrade methodes that have as input parameter an SQLiteDatabase created automatically. The onUpgrade method is for creating new versions of the DB, just copy the code that recreates the database tablee.
Inside your DBHelper, define in public static final variables the name of your DB, of your DB table (eg countries) and of the columns of your table (country, currency). In the onCreate method execute an SQL command to create your table, using the execSQL command that does not return anything (see video + slides). For example myDB.execSQL (create table countries (id integer primary key autoincrement, country text, currency text)
Inside your DBHelper, define methods to help you read / write your data. For example, create a method to insert a new record. First get access to your SQLiteDatabase using this.getWritableDatabase(). Then use an object of the class ContentValues to put pairs of ("column name", value). Insert this content value object to your database with the method insert.
Inside your DBHelper, define a method to read all your DB content. Get access to your DB (using getReadableDatabase() as we only want to read the database). Now use the rawQuery command to run an SQL query and get results back. For example use a Cursor object to get the results of the query myDB.rawQuery( "select * from countries", null ). Then access the methods of your Cursor object to go through the results, eg. moveToFirst(), moveToNext(), getColumnIndex(name"), if (res.isAfterLast() == false) , etc).
The quotes from Chuck Norris are too precious to leave on the internet. Extend your exercise from Lab 3 to store the random jokes you are reading in a database and notify the user that the joke has been forever saved, and allow them to see the DB in another window (activity). You can use the id provided by the API to ensure you do not store jokes you already saved.
All actitivies in your application should share the same database. To do this make your helper class a "Singleton", see notes later.
Add a second activity to your Chuck Norris quote application. The first activity will be the same as it was (read the random quote) but when you read a quote you will add it to the DB. If you already have the quote you will not add it. Use the ID quote that comes from the Chuck Norris API to confirm if you have the quote or not in your DB.
Create your DB helper class that extends SQLiteOpenHelper for creating a DB that stores a quote. Your DB helper class will be accessed by multiple activities. This class should use a Singleton to Instantiate the SQLiteOpenHelper. This means that you should declare a Private Static instance of the helper internally in the class - this will be the only instance of this class. Make its constructor private so no other class can access it and create the instance. Provide a way for classes outside (eg other activities) to access this instance. See additional info on the last part of the lecture slides 23-24.
Your DB helper class should be able to provide methods for adding quotes and reading them.
In the first activity add a button so the user can go to the second activity to see all the quotes. The seocnd activity should saw all the quotes you have stored. You can use a scrollable TextView (as done before) to show all the quotes in the DB.
L'objectif est d'apprendre comment utiliser les BD avec SQLite dans une application Android.
Rappel :Créez une application avec une activité. Ajoutez deux champs EditText (PlainText dans les views in xml layouts) où l'utilisateur peut taper, et un bouton pour ajouter le texte dans une DB. Ajoutez également une TextView que nous utiliserons pour afficher le contenu de la BD.
Créez une classe pour vous aider à gérer votre BD (vous pouvez l'appeler DBHelper) qui extends SQLiteOpenHelper. Vous devrez implémenter un constructeur qui prend en entrée un Context (ce sera l'activité qui l'appelle) ainsi qu'une méthode onCreate et onUpgrade qui ont comme paramètre d'entrée une SQLiteDatabase créée automatiquement. La méthode onUpgrade permet de créer de nouvelles versions de la BD, il suffit de copier le code qui recrée la table de la base de données.
À l'intérieur de votre DBHelper, définissez des variables static public final pour rle nom de votre BD, de votre table de BD (par exemple countries) et des colonnes de votre table (country, currency). Dans la méthode onCreate exécutez une commande SQL pour créer votre table, en utilisant la commande execSQL qui ne renvoie rien (voir vidéo + slides). Par example myDB.execSQL (create table countries (id integer primary key autoincrement, country text, currency text)
À l'intérieur de votre DBHelper, définissez des méthodes pour vous aider à lire / écrire vos données. Par exemple, créez une méthode pour insérer un nouvel enregistrement. Obtenez d'abord l'accès à votre SQLiteDatabase en utilisant this.getWritableDatabase(). Utilisez ensuite un objet de la classe ContentValues pour mettre des paires de ("nom de colonne", valeur). Insérez cet objet de ContentValues dans votre base de données avec la méthode insert.
À l'intérieur de votre DBHelper, définissez une méthode pour lire tout le contenu de votre BD. Obtenez l'accès à votre BD (en utilisant getReadableDatabase() car nous ne voulons pas changer la BD, seulement la lire). Utilisez maintenant la commande rawQuery pour exécuter une requête SQL et récupérer les résultats. Par exemple, utilisez un objet Cursor pour obtenir les résultats de la requête myDB.rawQuery("select * from countries", null ). Accédez ensuite aux méthodes de votre objet Curseur pour parcourir les résultats, par exemple moveToFirst(), moveToNext(), getColumnIndex(name"), if (res.isAfterLast() == false) , etc).
Les quotes de Chuck Norris sont trop précieuses pour être laissées sur internet. Prolongez votre exercice du laboratoire 3 pour stocker les quotes aléatoires que vous lisez dans une base de données. Notifiez l'utilisateur que le quote a été sauvegardé pour toujours, et lui donnez un façon de voir la BD dans une autre fenêtre (activité). Vous pouvez utiliser l'id fourni par l'API pour vous assurer que vous ne stockez pas les quotes que vous avez déjà sauvegardées.
Toutes les actitivités de votre application doivent partager la même base de données. Pour ce faire, faites de votre classe d'aide un "Singleton", voir les notes plus tard.
Ajoutez une deuxième activité à votre application de citation de Chuck Norris. La première activité sera la même qu'avant (lire la citation aléatoire) mais lorsque vous lirez un quote, vous l'ajouterez à la BD. Si vous avez déjà le quote, vous ne l'ajouterez pas. Utilisez l'id du quote qui provient de l'API de Chuck Norris pour confirmer si vous avez la citation ou non dans votre BD.
Créer votre classe DB helper qui étend SQLiteOpenHelper pour créer une DB qui stocke les quotes. Votre classe DB helper sera accessible par plusieurs activités. Cette classe doit donc utiliser un Singleton pour instancier le SQLiteOpenHelper. Cela signifie que vous devez déclarer une instance Private Static de l'assistant en interne dans la classe - ce sera la seule instance de cette classe. Rendez son constructeur privé afin qu'aucune autre classe ne puisse y accéder et créer l'instance. Fournissez un moyen pour les classes extérieures (par exemple les autres activités) d'accéder à cette instance. Voir des infos supplémentaires sur la dernière partie des diapositives de la conférence 23-24.
Votre classe DB helper devrait être en mesure de fournir des méthodes pour ajouter des citations et les lire.
Dans la première activité, ajoutez un bouton pour que l'utilisateur puisse aller dans la deuxième activité pour voir toutes les quotes. La seocnd activité devrait montrer toutes les citations que vous avez stockés. Vous pouvez utiliser un TextView défilant /scrollablee (comme fait avant) pour montrer toutes les quotes dans le DB.