web-dev-qa-db-fra.com

Comment créer une base de données sous Android?

J'ai besoin d'une procédure étape par étape pour créer une base de données dans Android.

30
prakrati

La base de données est une chose importante dans la programmation. Beaucoup de nos codes utilisent toujours des données pour être traitées et enregistrées. Comme tout autre environnement de programmation, Android prend également en charge la programmation de base de données. Vous pouvez utiliser la base de données par défaut prise en charge par Android, SQLiteDatabase.

La base de données dans SQLiteDatabase peut contenir plusieurs tables. Supposons que nous ayons une base de données PERSONALDB et une table BIODATA. La structure de BIODATA est:

_id integer
code string
name string
gender string

_id is for key increment,

code, name et gender est pour la description de person.

Lorsque le programme est appelé pour la première fois, nous devons nous assurer que la base de données et la table sont ouvertes, si elles existent, sinon, nous devons créer une base de données et une table. Comme exemple de Android notepad sample, voici la classe PersonDbHelper pour manipuler la table Biodata.

import Java.io.FileNotFoundException;
import Java.util.ArrayList;
import Java.util.List;

import Android.content.ContentValues;
import Android.content.Context;
import Android.database.Cursor;
import Android.database.SQLException;
import Android.database.sqlite.SQLiteDatabase;
import Android.util.Log;

public class PersonDbHelper {
    class Row extends Object {
        public long _Id;
        public String code;
        public String name;
        public String gender;
    }

    private static final String DATABASE_CREATE =
        "create table BIODATA(_id integer primary key autoincrement, "
            + "code text not null,"
            + "name text not null"
            +");";

    private static final String DATABASE_NAME = "PERSONALDB";

    private static final String DATABASE_TABLE = "BIODATA";

    private static final int DATABASE_VERSION = 1;

    private SQLiteDatabase db;

    public PersonDbHelper(Context ctx) {
        try {
            db = ctx.openDatabase(DATABASE_NAME, null);
        } catch (FileNotFoundException e) {
            try {
                db =
                    ctx.createDatabase(DATABASE_NAME, DATABASE_VERSION, 0,
                        null);
                db.execSQL(DATABASE_CREATE);
            } catch (FileNotFoundException e1) {
                db = null;
            }
        }
    }

    public void close() {
        db.close();
    }

    public void createRow(String code, String name) {
        ContentValues initialValues = new ContentValues();
        initialValues.put("code", code);
        initialValues.put("name", name);
        db.insert(DATABASE_TABLE, null, initialValues);
    }

    public void deleteRow(long rowId) {
        db.delete(DATABASE_TABLE, "_id=" + rowId, null);
    }

    public List<Row> fetchAllRows() {
        ArrayList<Row> ret = new ArrayList<Row>();
        try {
            Cursor c =
                db.query(DATABASE_TABLE, new String[] {
                    "_id", "code", "name"}, null, null, null, null, null);
            int numRows = c.count();
            c.first();
            for (int i = 0; i < numRows; ++i) {
                Row row = new Row();
                row._Id = c.getLong(0);
                row.code = c.getString(1);
                row.name = c.getString(2);
                ret.add(row);
                c.next();
            }
        } catch (SQLException e) {
            Log.e("Exception on query", e.toString());
        }
        return ret;
    }

    public Row fetchRow(long rowId) {
        Row row = new Row();
        Cursor c =
            db.query(true, DATABASE_TABLE, new String[] {
                "_id", "code", "name"}, "_id=" + rowId, null, null,
                null, null);
        if (c.count() > 0) {
            c.first();
            row._Id = c.getLong(0);
            row.code = c.getString(1);
            row.name = c.getString(2);
            return row;
        } else {
            row.rowId = -1;
            row.code = row.name= null;
        }
        return row;
    }

    public void updateRow(long rowId, String code, String name) {
        ContentValues args = new ContentValues();
        args.put("code", code);
        args.put("name", name);
        db.update(DATABASE_TABLE, args, "_id=" + rowId, null);
    }
    public Cursor GetAllRows() {
        try {
            return db.query(DATABASE_TABLE, new String[] {
                    "_id", "code", "name"}, null, null, null, null, null);
        } catch (SQLException e) {
            Log.e("Exception on query", e.toString());
            return null;
        }
    }
}

Dans la méthode onCreate, il suffit de mettre une seule commande donnée ci-dessous pour initialiser la base de données: ...

Db = new PersonDbHelper(this);

...

Il essaiera d'abord d'ouvrir "PersonalDB". S'il n'existe pas, il créera une base de données. Dans cette classe 'PersonDbHelper', vous avez des méthodes pour insérer, supprimer, mettre à jour, interroger la table.

Voici la référence au tutoriel ci-dessus:

Création de ma première Android

Vous pouvez également parcourir:

http://www.devx.com/wireless/Article/40842

http://www.vogella.de/articles/AndroidSQLite/article.html

J'espère que cela t'aides.

49
AlphaMale

Créer une base de données:

db= this.openOrCreateDatabase("db_hw3", MODE_PRIVATE, null); 
8
user976620
4
Snake

Notez que c'est une bonne pratique d'envelopper tous vos accès aux données à ContentProviders

0