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

Développement Mobile en Java Discussion :

Erreur logCat "java.lang.RuntimeException"


Sujet :

Développement Mobile en Java

  1. #1
    Membre actif Avatar de janyoura
    Femme Profil pro
    étudiante ingénierie informatique
    Inscrit en
    Mars 2012
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : étudiante ingénierie informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 365
    Points : 279
    Points
    279
    Par défaut Erreur logCat "java.lang.RuntimeException"
    Salut
    je suis entrain de faire un traitement avec la base de données SQLite et je suis débutante.
    Je vous explique ce que j'essaye de faire:
    Quand l'utilisateur sélectionne la ville et clique sur le bouton recherche, la recherche se lance pour trouver la formation qui se trouve dans cette ville à partir de la 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
    public class MaBase extends SQLiteOpenHelper {
    	private static final String TABLE_FORMATION = "table_formation";
    	private static final String COL_ID = "id";
    	private static final String COL_LIB = "libellé";
    	private static final String COL_TEL = "tel";
    	private static final String COL_EMAIL = "email";
    	private static final String COL_ADR = "adresse";
    	private static final String COL_VILLE = "ville";
    	private static final String COL_CAT = "catégorie";
     
    	private static final String DATABASE_NAME = "formation.db";
    	private static final int DATABASE_VERSION = 1;
     
    	private static final String CREATE_BDD = "CREATE TABLE " + TABLE_FORMATION + " ("
    	+ COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COL_LIB + " TEXT NOT NULL, "
    	 + COL_TEL + " TEXT NOT NULL, " + COL_EMAIL + " TEXT NOT NULL, " + COL_ADR + " TEXT NOT NULL, " + COL_VILLE + " TEXT NOT NULL, "+ COL_CAT + " TEXT NOT NULL);";
     
    	public MaBase(final Context context) {
    		super(context, DATABASE_NAME, null, DATABASE_VERSION);
    	}
     
    	@Override
    	public void onCreate(SQLiteDatabase db) {
    		//on crée la table à partir de la requête écrite dans la variable CREATE_BDD
    		db.execSQL(CREATE_BDD);
    	}
     
    	@Override
    	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    		//On peut faire ce qu'on veut ici moi j'ai décidé de supprimer la table et de la recréer
    		//comme ça lorsque je change la version les id repartent de 0
    		Log.i(getClass().getName(), "Upgrationg database from version " + oldVersion + " to " +newVersion);
    		db.execSQL("DROP TABLE " + TABLE_FORMATION + ";");
    		onCreate(db);
    	}
     
     
    }
    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
    69
    70
    71
    72
    73
    74
    75
    76
    public final class FormationBDD {
     
     
    	private static FormationBDD instance = new FormationBDD();
     
    	private transient MaBase maBaseSQLite;
    	private transient SQLiteDatabase bdd;
     
    	private static final String TABLE_FORMATION = "table_formation";
    	private static final String COL_ID = "ID";
    	private static final int NUM_COL_ID = 0;
    	private static final String COL_LIB = "libellé";
    	private static final int NUM_COL_LIB = 1;
    	private static final String COL_TEL = "tel";
    	private static final int NUM_COL_TEL = 2;
    	private static final String COL_EMAIL = "email";
    	private static final int NUM_COL_EMAIL = 3;
    	private static final String COL_ADR = "adresse";
    	private static final int NUM_COL_ADR = 4;
    	private static final String COL_VILLE = "ville";
    	private static final int NUM_COL_VILLE = 5;
    	private static final String COL_CAT= "catégorie";
    	private static final int NUM_COL_CAT = 6;
     
    	private FormationBDD(){
    		super();
    	}
     
    	public static FormationBDD getInstance(){
    		return instance;
    	}
     
     
     
    	public void initialize(final Context context){
    		//On crée la BDD et sa table
    	this.maBaseSQLite = new MaBase(context);
    	}
     
    	public void open()throws SQLiteException{
    		//on ouvre la BDD en écriture
    		bdd = maBaseSQLite.getWritableDatabase();
    	}
     
    	public void close(){
    		//on ferme l'accès à la BDD
    		bdd.close();
    	}
     
    	public SQLiteDatabase getBDD(){
    		return bdd;
    	}
     
    	public long insertFormation(Formation formation){
     
    		ContentValues values = new ContentValues();
    		//on lui ajoute une valeur associée à une clé (qui est le nom de la colonne dans laquelle on veut mettre la valeur)
    		values.put(COL_LIB, formation.getLibellé());
    		values.put(COL_TEL, formation.getTel());
    		values.put(COL_EMAIL, formation.getEmail());
    		values.put(COL_ADR, formation.getAdresse());
    		values.put(COL_VILLE, formation.getVille());
    		values.put(COL_CAT, formation.getCatégorie());
    		//on insère l'objet dans la BDD via le ContentValues
    		return bdd.insert(TABLE_FORMATION, null, values);
     
    	public Formation getFormation(String catégorie){
     
    		//Récupère dans un Cursor les valeurs correspondant à un livre contenu dans la BDD (ici on sélectionne le livre grâce à son titre)
    		Cursor c = bdd.rawQuery(" select " + COL_LIB + " from " + TABLE_FORMATION + " where " + COL_CAT + " > ?", new String[] {catégorie});
     
     
    		return cursorToFormation(c);
    	}
     
    	}
    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
     
    public class Main extends Activity  {
     
    	private Spinner listeVille = null;
    	private Spinner listeCat = null;
    	private Button rechercheBout = null;
    	Formation liste;
     
     
    	  @Override
    	  public void onCreate(Bundle savedInstanceState) {
    	    super.onCreate(savedInstanceState);
    	    setContentView(R.layout.recherche);
    	    FormationBDD.getInstance().initialize(this);
    	  //Création d'une instance de ma classe FormationBDD
           FormationBDD.getInstance().open();
            // on ouvre la base de données
           Formation formation = new Formation("coaching life", "20125885", "hhfsjkk", "adresse", "tunis", "gestion");
           FormationBDD.getInstance().insertFormation(formation);
    	    listeVille = (Spinner) findViewById(R.id.spinnerVille);
    	    List<String> exemple = new ArrayList<String>();
    	    exemple.add("Tunis");
    	    exemple.add("Sfax");
    	    exemple.add("Sousse");
     
     
    	    listeCat = (Spinner) findViewById(R.id.spinnerCat);
    	    List<String> catégorieList = new ArrayList<String>();
    	    catégorieList.add("Informatique");
    	    catégorieList.add("gestion");
    	    catégorieList.add("Langue");
     
    	    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, exemple);
    	    //Le layout par défaut est android.R.layout.simple_spinner_dropdown_item
    	    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    	    listeVille.setAdapter(adapter);
     
    	    ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, catégorieList);
    	    //Le layout par défaut est android.R.layout.simple_spinner_dropdown_item
    	    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    	    listeCat.setAdapter(adapter1);
     
    	    rechercheBout = (Button)findViewById(R.id.recherche);  
     
    	    String catégorie = listeCat.getSelectedItem().toString();
    		String ville = listeVille.getSelectedItem().toString();
     liste = FormationBDD.getInstance().getFormation(catégorie);
     
    	    rechercheBout.setOnClickListener(new View.OnClickListener() {
     
    			@Override
    			public void onClick(View v) {
     
    	        if (liste == null)
    	        Toast.makeText(Main.this, "liste de formation vide ", Toast.LENGTH_LONG).show();
    	        else
    	        	Toast.makeText(Main.this, "liste de formation " + liste.getCatégorie(), Toast.LENGTH_LONG).show();
     
    			}
    		});
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    12-09 00:42:24.700: W/dalvikvm(8648): threadid=1: thread exiting with uncaught exception (group=0x40c6c1f8)
    12-09 00:42:24.705: E/AndroidRuntime(8648): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.trainingcenter/com.example.trainingcenter.Main}: java.lang.IllegalStateException: Couldn't read row 0, col 1 from CursorWindow.  Make sure the Cursor is initialized correctly before accessing data from it.
    Merci pour l'aide
    "Scientists dream about doing great things. Engineers do them.”

    La réussite après tant de travail est un sentiment à vivre

    Si ton message est résolu, il y a un bouton qui est fait pour ça :
    Il se trouve tout en bas de la conversation !

    N'oublie pas que si ce message t'as aidé, tu peux voter pour lui en utilisant

  2. #2
    Membre éprouvé
    Avatar de LinkinSelim
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Mars 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Mars 2006
    Messages : 365
    Points : 1 034
    Points
    1 034
    Par défaut
    Bonjour,

    Comment est implémentée la méthode cursorToFormation() ?
    Je vois que ton select ne séléctionne que la colonne COL_LIB, donc ton cursor ne contiendra qu'une seule colonne, or tu accède peut être à d'autre colonnes avec la méthode cursorToFormation.

    A+,
    Selim.

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

Discussions similaires

  1. Erreur "java.lang.RuntimeException: Cannot find FacesContext"
    Par moha_alnif dans le forum Wildfly/JBoss
    Réponses: 9
    Dernier message: 06/12/2012, 22h40
  2. Réponses: 0
    Dernier message: 22/03/2012, 11h00
  3. Réponses: 1
    Dernier message: 08/06/2009, 16h22

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