IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Création - Accès Base de données


Sujet :

Android

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 21
    Points : 13
    Points
    13
    Par défaut Création - Accès Base de données
    Bonjour,

    je découvre le développement d'application Android et également les premiers problèmes de développement .

    J'essai de créer une base SqLite et d'y accéder. J'aimerais que cette base soit créer lors de la première utilisation de l'application, et ensuite réutiliser si elle existe déjà.

    J'ai réaliser pour cela cette classe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    package test.date;
     
    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.database.sqlite.SQLiteOpenHelper;
    import android.util.Log;
     
    public class BDAcces {
     
    	private static final String DATABASE_CREATE =
        	"CREATE TABLE TEST ("
    		  +"id INTEGER PRIMARY KEY  AUTOINCREMENT,"
    		  +"prenom VARCHAR(25)  NULL,"
    		  +"nom VARCHAR(25)  NULL,"
    		  +"surnom VARCHAR(25)  NULL,"
    		  +")";
     
        private static final String DATABASE_NAME = "TEST";
     
        private static final String DATABASE_TABLE = "TEST";
     
        private static final int DATABASE_VERSION = 1;
     
        private SQLiteDatabase db;
     
        public BDAcces(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 insertAnniv(String sPrenom, String sNom, String sSurnom) 
        {
            ContentValues initialValues = new ContentValues();
            initialValues.put("prenom", sPrenom);
            initialValues.put("nom", sNom);
            initialValues.put("surnom", sSurnom);
            db.insert(DATABASE_TABLE, null, initialValues);
        }
     
        public void deleteRow(long rowId) {
            db.delete(DATABASE_TABLE, "id=" + rowId, null);
        }
     
    }
    Concrètement elle ne fonctionne pas, la ligne de creation de database ne compile pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     db =  ctx.openDatabase(DATABASE_NAME, null);
    Voila je suis plutôt perdu dans le fonctionnement global des bases de données sur Android.
    J'ai étudié le guide de développement fournit par Google mais je n'ai pas pour autant compris comment fonctionnait le tout.

    Merci pour votre aide

    ++

  2. #2
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Citation Envoyé par rocket69 Voir le message
    Concrètement elle ne fonctionne pas, la ligne de creation de database ne compile pas:
    Si ça ne compile pas, quelle est l'erreur de compilation ?...
    La méthode "ctx.openDatabase(...)" renvoie-t'elle bien un objet de type SQLiteDatabase ?
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 21
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par CyberChouan Voir le message
    Si ça ne compile pas, quelle est l'erreur de compilation ?...
    La méthode "ctx.openDatabase(...)" renvoie-t'elle bien un objet de type SQLiteDatabase ?
    L'erreur est la suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Aucune méthode openDataBase() pour l'objet ctx (Context)
    Ce qui est je trouve normal étant donné qu'un Objet context n'a pas de méthode pour ouvrir ou créer une base SQLITE. Mais je ne sais quoi mettre à la place...

    Merci pour l'aide

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 21
    Points : 13
    Points
    13
    Par défaut
    J'ai testé une autre solution d'accés / création de base de données:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    import android.content.ContentValues;
    import android.content.Context;
    import android.database.Cursor;
    import android.database.SQLException;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;
    import android.util.Log;
     
     
    public class BDAcces {
     
    private static final String TAG = "BDAcces";
    private DatabaseHelper mDbHelper;
    private SQLiteDatabase mDb = null;
     
    private static final String DATABASE_CREATE =
    	"CREATE TABLE TEST ("
    	  +"id INTEGER PRIMARY KEY  AUTOINCREMENT,"
    	  +"prenom VARCHAR(25)  NULL,"
    	  +"nom VARCHAR(25)  NULL,"
    	  +"surnom VARCHAR(25)  NULL,"
    	  +")";
     
    private static final String DATABASE_NAME = "test";
    private static final String DATABASE_TABLE = "TEST";
    private static final int DATABASE_VERSION = 2;
     
    private final Context mCtx;
     
    private static class DatabaseHelper extends SQLiteOpenHelper {
     
    DatabaseHelper(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }
     
    @Override
    public void onCreate(SQLiteDatabase db) {
     
    db.execSQL(DATABASE_CREATE);
    }
     
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
    + newVersion + ", which will destroy all old data");
    db.execSQL("DROP TABLE IF EXISTS TEST");
    onCreate(db);
    }
    }
     
     
    public BDAcces(Context ctx) {
    this.mCtx = ctx;
    }
     
     
    public BDAcces open() throws SQLException {
    mDbHelper = new DatabaseHelper(mCtx);
    mDb = mDbHelper.getWritableDatabase();
    return this;
    }
     
    public void close() {
    mDbHelper.close();
    }
     
     
    }


    La j'ai une erreur au niveau de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mDb = mDbHelper.getWritableDatabase();
    Apparemment il ne trouve pas la base.

    Merci pour votre aide

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 21
    Points : 13
    Points
    13
    Par défaut
    Problème résolue, j'ai réécrite la classe et elle fonctionne. Je ne comprends pas vraiment pourquoi mais ca marche

    ++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [debutant] création de base de donnée pour un forum
    Par Pierrick584 dans le forum Débuter
    Réponses: 1
    Dernier message: 01/01/2006, 11h38
  2. programme Delphi permettant la création de base de donnée
    Par lassad dans le forum Bases de données
    Réponses: 2
    Dernier message: 18/10/2005, 14h06
  3. [Kylix] Kylix et accès Base de données
    Par Oyoboy dans le forum EDI
    Réponses: 16
    Dernier message: 22/06/2004, 16h41
  4. Réponses: 1
    Dernier message: 17/06/2004, 17h44
  5. Réponses: 3
    Dernier message: 24/10/2003, 21h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo