Partage
  • Partager sur Facebook
  • Partager sur Twitter

passé une variable dans une classe

si execute par plusieur activité

    15 mai 2013 à 20:32:05

    bonjour

    j'ai une classe java qui gere une bdd sqlite

    differente acivité creer des table dans ma base a l'aide de cette classe

    je voudrai utiliser la meme classe en informant celle ci de la table a gerer

    merci de votre aide

    christophe

    -
    Edité par christophe45 15 mai 2013 à 21:10:18

    • Partager sur Facebook
    • Partager sur Twitter
      16 mai 2013 à 11:08:37

      C'est plus propre de creer toutes ces tables des le depart.

      Je ne penese pas que l'on puisse ajouter des tables dans la base de donnees comme ca. A moins de la supprimer d'abord de l'application.

      La classe base de donnees implementant SQLiteOpenHelper on peut acceder a la methode onUpgrade mais elle prend comme argument une base de donnees, elle met a jour uniquement son numero de version.

      Voila sinon tu peux l'ouvrir comme n'importe qu'elle classe

      MaBaseDonnees maBase = new MaBaseDonnees(this.getApplicationContext());

      maBase.onUpgrade(,,);

      • Partager sur Facebook
      • Partager sur Twitter
        16 mai 2013 à 13:46:09

        bonjour

        merci pour votre reponse

        mais j'ai bien du mal a comprendre la syntaxe

        comment informer la classe avec le nom de la table

        mon code provient de ce tutoriel

        http://wptrafficanalyzer.in/blog/storing-and-retrieving-locations-in-sqlite-from-google-maps-android-api-v2/

        ma classe java a informer

        package in.wptrafficanalyzer.locationmarkersqlite; import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper; public class LocationsDB extends SQLiteOpenHelper{     /** Database name */    private static String DBNAME = "locationmarkersqlite";     /** Version number of the database */    private static int VERSION = 1;     /** Field 1 of the table locations, which is the primary key */    public static final String FIELD_ROW_ID = "_id";     /** Field 2 of the table locations, stores the latitude */    public static final String FIELD_LAT = "lat";     /** Field 3 of the table locations, stores the longitude*/    public static final String FIELD_LNG = "lng";     /** Field 4 of the table locations, stores the zoom level of map*/    public static final String FIELD_ZOOM = "zom";     /** A constant, stores the the table name */    private static final String DATABASE_TABLE = "locations";     /** An instance variable for SQLiteDatabase */    private SQLiteDatabase mDB;     /** Constructor */    public LocationsDB(Context context) {        super(context, DBNAME, null, VERSION);        this.mDB = getWritableDatabase();    }     /** This is a callback method, invoked when the method getReadableDatabase() / getWritableDatabase() is called    * provided the database does not exists    * */    @Override    public void onCreate(SQLiteDatabase db) {        String sql =     "create table " + DATABASE_TABLE + " ( " +                         FIELD_ROW_ID + " integer primary key autoincrement , " +                         FIELD_LNG + " double , " +                         FIELD_LAT + " double , " +                         FIELD_ZOOM + " text " +                         " ) ";         db.execSQL(sql);    }     /** Inserts a new location to the table locations */    public long insert(ContentValues contentValues){        long rowID = mDB.insert(DATABASE_TABLE, null, contentValues);        return rowID;    }     /** Deletes all locations from the table */    public int del(){        int cnt = mDB.delete(DATABASE_TABLE, null , null);        return cnt;    }     /** Returns all the locations from the table */    public Cursor getAllLocations(){        return mDB.query(DATABASE_TABLE, new String[] { FIELD_ROW_ID,  FIELD_LAT , FIELD_LNG, FIELD_ZOOM } , null, null, null, null, null);    }     @Override    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {    } }

        on voit que la variable String DATABASE_TABLE = "locations"; est indiquer dans la classe

        mais comment lui dire par exemple efface la table 'table2'

        avec cette partie de code inscrit dans une activite diffente

          // Creating an instance of LocationDeleteTask                LocationDeleteTask deleteTask = new LocationDeleteTask();                 // Deleting all the rows from SQLite database table                deleteTask.execute();

        merci enormement pour votre aide

        christophe

        • Partager sur Facebook
        • Partager sur Twitter
          16 mai 2013 à 15:25:06

          Pourquoi faire complique quand on peut faire simple

          Dans ta classe Database tu cree une methode publique (ou  protected) qui va supprimer ta table (Drop Table) qui retourne un booleen

          Dans ton activite apres avoir ouvert la base de donnees tu appelles la methode publique.

          Avec trois classe

          Ton activity ne touche plus ta base de donnees

          Ta classe base de donnees

          La seconde classe va manipuler la table (ouverture a l'instanciation) et contiendra toute les methodes de select, d'update ou de delete (fermer la connection a la fin de chaque methode)

          Ton Activity instancie la seconde classe et utilise les methodes qui vont bien.

          Voila comment bien faire les choses. Perso je prefere la deuxieme possibilite, bien plus propre.

          Attention de bien fermer tes connections a la base de donnees avant d'en ouvrir une autre sinon gros crash a venir

          • Partager sur Facebook
          • Partager sur Twitter
            16 mai 2013 à 23:16:15

            merci beaucoup pour tes reponses

            mais je suis debutant sur android et pour moi java est pas si simple ( je suis plutot phpsql et vb)

            mais je m'y met, je trouve ca pas mal

            je comprends rien a ce que tu me raconte :)

            je n'ai pas de classe 'base de donnée'

            instancie???

            pour retourner un booleen?? ah oui si la table est effacée

            merci quand meme pour ton aide

            christophe

            • Partager sur Facebook
            • Partager sur Twitter
              16 mai 2013 à 23:37:29

              Bon alors il te faut du code pour comprendre. Je vais voir ce que j'ai en stock.

              La classe base de donnees. Elle n'a que deux fonction (dans ton cas c'est LocationDB meme si elle est mal ecrite)

              • Elle cree une base de donnees (ou elle en ouvre une existante dans le dossier assets)
              • Elle permet d'acceder a cette base grace au methodes create, open et close
              • Elle permet aussi de la mettre a jour

              On cree une classe qui accede a cette base de donnees. Elle a plusieurs fonctions

              • Elle accede a la base de donnees, elle ouvre et ferme celle ci
              • En VB il n'y a pas d'instanciation  (Dim objet as new Object() ). C'est la meme chose en Java, on cree un constructeur qui ouvre la base de donnee
              • Elle permet d'agir sur la base : Update Select ou Add

              L'Activity s'attache a cette derniere classe et recupere les resultats

              Voila je ne pense pas faire plus sachant qu'en vb on fait exactement la meme chose, sauf que l'ecriture est differente

              • Partager sur Facebook
              • Partager sur Twitter
                17 mai 2013 à 20:34:02

                bonjour,

                ok,pour tes explication

                la c'est clair

                donc ci je comprend bien il faudrai que je met dans mon activité un code qui ressemble a ca

                 si la table a efface est "latable1"

                private static final String DATABASE_TABLE = "latable1";               
                LocationDeleteTask deleteTask = new LocationDeleteTask(DATABASE);
                 deleteTask.execute();
                merci encore pour ton aide
                Christophe
                • Partager sur Facebook
                • Partager sur Twitter

                passé une variable dans une classe

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown