Android

Résolu/Fermé
Pepito39 Messages postés 91 Date d'inscription mercredi 15 mai 2013 Statut Membre Dernière intervention 21 mars 2014 - 29 mai 2013 à 15:41
Pepito39 Messages postés 91 Date d'inscription mercredi 15 mai 2013 Statut Membre Dernière intervention 21 mars 2014 - 31 mai 2013 à 11:53
Salut,

J'aimerais avoir des conseils pour gérer une base de donnée.
Je souhaite récupérer la base une fois sur un clic sur le bouton afin de faire une requête select.
Cependant, je suis paumé, et si vous pouvez faire la lumière sur tout ça, ça m'aiderait beaucoup ^^
Voici, le fichier DatabaseHandler pour créer ma base:
package com.example.cartedefidelite;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;

public class DatabaseHandler extends SQLiteOpenHelper {
	  public static final String CLIENT_NUM = "id";
	  public static final String CLIENT_NOM = "nom";
	  public static final String CLIENT_PRENOM = "prenom";
	  public static final String CLIENT_ADRESSE = "adresse";
	  public static final String CLIENT_CP = "cp";
	  public static final String CLIENT_VILLE = "ville";
	  public static final String CLIENT_MAIL = "mail";
	  public static final String CLIENT_TEL = "tel";
	  public static final String CLIENT_PIZZAENCOURS = "nbpizzaencours";
	  public static final String CLIENT_PIZZATOTAL = "nbpizzatotal";
	  
	  
	     
	  public static final String CLIENT_TABLE_NAME = "Client";
	  public static final String CLIENT_TABLE_CREATE = 
		  "CREATE TABLE " + CLIENT_TABLE_NAME + " (" +
	      CLIENT_NUM + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
	      CLIENT_NOM + " TEXT NOT NULL, " +
	      CLIENT_PRENOM + " TEXT NOT NULL, " +
	      CLIENT_ADRESSE + " TEXT, " +
	      CLIENT_CP + " TEXT, " +
	      CLIENT_VILLE + " TEXT, " +
	      CLIENT_MAIL + " TEXT, " +
	      CLIENT_TEL + " TEXT, " +
	      CLIENT_PIZZAENCOURS + " INTEGER DEFAULT 0, "+
	      CLIENT_PIZZATOTAL + "INTEGER DEFAULT 0);";
	 
	  public DatabaseHandler(Context context, String name, CursorFactory factory, int version) {
	    super(context, name, factory, version);
	  }
	 
	  public void onCreate(SQLiteDatabase db) {
	    db.execSQL(CLIENT_TABLE_CREATE);
	  }
	  public static final String CLIENT_TABLE_DROP = "DROP TABLE IF EXISTS " + CLIENT_TABLE_NAME + ";";
	  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
	      db.execSQL(CLIENT_TABLE_DROP);
		  onCreate(db); }
		  
	}


Et voici la partie de code où je souhaite faire ma requête après avoir récupérer la valeur dans l'EditText.

private OnClickListener rechercheListener = new OnClickListener() {
    	public void onClick(View v)
    	{
    		//récupération de la valeur dans l'EditText
    		nomduclient = (EditText)findViewById(R.id.nomclient);
    		String nomclient = nomduclient.getText().toString();
    		//connexion à la base de donnée + requête + Affichage du résultat dans une nouvelle activité où figurera un bouton fidelité à côté de chaque clients si plusieurs portent le même nom.
    		public SQLiteDatabaseOpen(){
    		mDb = getwritableDatabase();
    		//Cursor query (boolean distinct, String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit);
    		}
    		public void close(){
    			mDb.close();
    		}
    		public SQLiteDatabase getDB(){
    			return mDb;
    		}
    	}
    };

Des erreurs d'accolades surviennent, et le code n'est pas complet, mais je suis perdu... C'est pour cela que je vous demande votre aide :)
Merci d'avance! :)
A voir également:

7 réponses

scinarf Messages postés 1098 Date d'inscription samedi 18 novembre 2006 Statut Membre Dernière intervention 25 septembre 2014 252
29 mai 2013 à 18:33
Bonjour,

déjà je changerai l'approche : vous partez d'une inner Class, je vous conseil de recréer un .java pour que ce soit beaucoup plus claire pour vous.

A priori vous êtes familier avec les langages à objet (constrcuteur, destructeur ... ) donc faite comme un vrai langage objet, chaque class est écrite dans un fichier différent.

public class rechercheListener implements OnClickListener()
{
private String NomClient;
private SQLiteDatabase MyDataBAse;

public OnItemClickListen(String Nom, SQLiteDatabase db)
{
rechercheListener = context;
MyDataBAse = db;
}


@Override
public void clck(View view)
{
// TODO Auto-generated method stub
Vos actions sur la bases de données // Recherche ....

}

}

Je suis pas spécialiste en BDD pour le moment donc je ne peux pas trop vous aider la dessus, mais en écrivant le code dans une class propre , il y a beaucoup moins de risque d'erreur, c'est plus claire, et moins de leak of memory.

APrès il suffit de faire une instance de la class dans une autre et le tour est joué.

Si vous avez d'autre questions j'essairai d'y répondre.
0
Pepito39 Messages postés 91 Date d'inscription mercredi 15 mai 2013 Statut Membre Dernière intervention 21 mars 2014 1
29 mai 2013 à 18:49
D'accord, merci des conseils!
Familier au langage objet, très peu ^^ J'en ai fait un peu en C# en cours, mais on déclarait toutes les classes dans un même fichier.. Donc c'est pour ça, java, je suis un peu perdu ^^
Donc, ça marche, je vais tâcher de faire comme tu me l'as conseillé, c'est vrai que ça à l'air plus clair!
0
scinarf Messages postés 1098 Date d'inscription samedi 18 novembre 2006 Statut Membre Dernière intervention 25 septembre 2014 252
29 mai 2013 à 19:50
Ton prof qui te disais de déclarer toutes les class dans le même fichier ?


Waou..... quel arnaque..; Change de formation de suite !
0
Pepito39 Messages postés 91 Date d'inscription mercredi 15 mai 2013 Statut Membre Dernière intervention 21 mars 2014 1
30 mai 2013 à 14:35
Ouais, peut être bien que devrais alors! ^^
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Pepito39 Messages postés 91 Date d'inscription mercredi 15 mai 2013 Statut Membre Dernière intervention 21 mars 2014 1
30 mai 2013 à 17:15
Salut,
J'ai une petite question, est-ce possible d'envoyer la valeur d'un EditText d'une activité à une autre?
Je vois pas trop comment faire..
0
scinarf Messages postés 1098 Date d'inscription samedi 18 novembre 2006 Statut Membre Dernière intervention 25 septembre 2014 252
31 mai 2013 à 09:14
Alors oui c'est possible :

en début de programme il faut définir un :

private final String MaValeurET = "EditText";


ensuite dans l'intent lorsque vous changez d'activité il faut utiliser :

intent.putExtra(MaValeurET, EdtiText.getText().toString());


Une fois la deuxième activité il fuat récupérer l'intent et la valeur :

définir le même String en final dans la deuxième activité :

private final String MaValeurET = "EditText";
private Intent MonIntent =null ;
private String MonEditText;

puis :

MonIntent.getIntent();
if (MonIntent != nul)
{
MonEditText = MonIntent.getExtra(MAValeurEt);
}



L'editText est maintenant dans la deuxième activité dans la variable MonEditTExt

Bien a vous.
0
Pepito39 Messages postés 91 Date d'inscription mercredi 15 mai 2013 Statut Membre Dernière intervention 21 mars 2014 1
31 mai 2013 à 11:53
Merci grandement :D
0