Bonjour à tous et bonne année,
Je reviens une nouvelle fois vers vous car après avoir tenter plein de choses (+ ou - farfelues parfois) depuis ce matin, je reste bloqué.
En fait j'ai créé une bdd "divert.bd" puis une table "divertissement" et tout marche...
Jusque là, pas de problèmes.
J'ai ensuite ajouté une table "commentaires" a ma bdd "divert.bd" sur le même shema que la 1ere :
Seulement, quand je souhaite y accéder, j'ai un nullpointerException sur un champ qui ne se trouve pas dans le curseur!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 //la table commentaires: db.execSQL("CREATE TABLE " + SQLITE_TABLE_COMMS + " ( " + KEY_ID_COMM + " INTEGER PRIMARY KEY AUTOINCREMENT," + KEY_ID_DIVERT + " TEXT NOT NULL," + KEY_LE_COMM + " TEXT NOT NULL," + KEY_LA_NOTE + " TEXT NOT NULL);");
j'ai bien listé les champs dudit curseur avec Log.v sur les elements de cursor.getColumnsNames et il contient bien les champs que j'attend.
voici le code que j'utilise pour l'affichage (qui marche si je requete sur la 1ere table :s)
l'erreur indique "column "_id" doesn't exist" alors que ma table commentaires n'en contient pas (l'id étant designé par "id_comm")
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 Cursor cursor = bdd.getTousLesComms(); Log.v("tag","nb_col : "+cursor.getColumnCount()); for(String e : cursor.getColumnNames() ){ Log.v("tag","col_names : "+e); } // les champs de la BDD a afficher String[] columns = new String[] { BDD.KEY_DESCRIPTION/*, BDD.KEY_NOM, BDD.KEY_PAYS*/ }; int[] to = new int[] { R.id.commentaire/*, R.id.nom, R.id.pays */}; // creation de l'adapter SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.comms_info, cursor, columns, to, 0); // on recupere la liste et on lui affecte l'adapter ListView listComms = (ListView) findViewById(R.id.listComms); listComms.setAdapter(adapter);
Je pense donc que le problème vient du fait que la table commentaire n'est pas bien crée dans ma table MAIS je ne sais pas comment verifier cela puisque je n'ai pas accés au ficher ".db" (l'emulateur n'étant pas rootable)
voici donc mes questions:
- comment peux t'on s'assurer qu'une table a bien été crée dans la bdd?
- peux t'on lister/afficher le contenu d'une table depuis le code android?
Ou si jamais vous trouvez une erreur dans mon code...
parce que là j'avoue que je desespere un peu
D'avance merci,
Geoffrey.
EDIT : bon la table est bien créée car même si je n'arrive pas à l'afficher avec l'adapter, la methode d'ajout en base marche bien (la methode bd.insert(...) retourne bien l'id de la ligne ajoutée et il est incrémenté a chaque utilisation)
je poste ci dessous l'erreur au cas ou :s
01-03 16:56:26.747: E/AndroidRuntime(1666): FATAL EXCEPTION: main
01-03 16:56:26.747: E/AndroidRuntime(1666): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.gob.movurbuddies/com.gob.movurbuddies.F2_FicheDescriptive_Activity}: java.lang.IllegalArgumentException: column '_id' does not exist
01-03 16:56:26.747: E/AndroidRuntime(1666): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
01-03 16:56:26.747: E/AndroidRuntime(1666): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
01-03 16:56:26.747: E/AndroidRuntime(1666): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
01-03 16:56:26.747: E/AndroidRuntime(1666): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
01-03 16:56:26.747: E/AndroidRuntime(1666): at android.os.Handler.dispatchMessage(Handler.java:99)
01-03 16:56:26.747: E/AndroidRuntime(1666): at android.os.Looper.loop(Looper.java:123)
01-03 16:56:26.747: E/AndroidRuntime(1666): at android.app.ActivityThread.main(ActivityThread.java:4627)
01-03 16:56:26.747: E/AndroidRuntime(1666): at java.lang.reflect.Method.invokeNative(Native Method)
01-03 16:56:26.747: E/AndroidRuntime(1666): at java.lang.reflect.Method.invoke(Method.java:521)
01-03 16:56:26.747: E/AndroidRuntime(1666): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
01-03 16:56:26.747: E/AndroidRuntime(1666): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
01-03 16:56:26.747: E/AndroidRuntime(1666): at dalvik.system.NativeStart.main(Native Method)
01-03 16:56:26.747: E/AndroidRuntime(1666): Caused by: java.lang.IllegalArgumentException: column '_id' does not exist
01-03 16:56:26.747: E/AndroidRuntime(1666): at android.database.AbstractCursor.getColumnIndexOrThrow(AbstractCursor.java:314)
01-03 16:56:26.747: E/AndroidRuntime(1666): at android.support.v4.widget.CursorAdapter.init(CursorAdapter.java:174)
01-03 16:56:26.747: E/AndroidRuntime(1666): at android.support.v4.widget.CursorAdapter.<init>(CursorAdapter.java:151)
01-03 16:56:26.747: E/AndroidRuntime(1666): at android.support.v4.widget.ResourceCursorAdapter.<init>(ResourceCursorAdapter.java:93)
01-03 16:56:26.747: E/AndroidRuntime(1666): at android.support.v4.widget.SimpleCursorAdapter.<init>(SimpleCursorAdapter.java:89)
01-03 16:56:26.747: E/AndroidRuntime(1666): at com.gob.movurbuddies.F2_FicheDescriptive_Activity.displayListView(F2_FicheDescriptive_Activity.java:121)
01-03 16:56:26.747: E/AndroidRuntime(1666): at com.gob.movurbuddies.F2_FicheDescriptive_Activity.onStart(F2_FicheDescriptive_Activity.java:100)
01-03 16:56:26.747: E/AndroidRuntime(1666): at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1129)
01-03 16:56:26.747: E/AndroidRuntime(1666): at android.app.Activity.performStart(Activity.java:3781)
01-03 16:56:26.747: E/AndroidRuntime(1666): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2636)
01-03 16:56:26.747: E/AndroidRuntime(1666): ... 11 more
Partager