Aller au contenu

Problèmes base de donnée sdlite


Recommended Posts

Bonjour,

J'ai une erreur:

03-08 08:46:24.156: E/Database(197): android.database.sqlite.SQLiteException: table Program has no column named exercice: , while compiling: INSERT INTO Program(exercice, duree) VALUES(?, ?);

Alors que je crée bien une table Program avec une colonne exercice et une duree. Je vous joint mon code pouvez vous m'aider

package sdz.home_training;
import java.util.ArrayList;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DatabaseHelper  extends SQLiteOpenHelper
{

   /**
 * Nom de la DB (nom du fichier SQLite).
 */
   private static String DATABASE_NAME = "accesdbtests.db";

   /**
 * Numéro de version de la DB.
 * Si ce numéro change, la fonction onUpgrade est exécutée
 * pour effacer le contenu de la DB et recréer la nouvelle
 * version du schéma.
 */
   private static final int DATABASE_VERSION = 1;

   /**
 * Lien vers la session DB.
 */
   private SQLiteDatabase db;



  /**
   * Nom de la table de la BD (oui une seule table).
   * Il semblerait que la taille du nom soit limitée???
   */
  private static final String TABLE_PROGRAMMES = "Program";

  /**
   * Script SQL de création de la table Programmes.
   */
 private static final String COLONNE_ID = "_id";
 private static final String COLONNE_EXO = "exercice";
 private static final int COLONNE_EXO_ID = 1;
 private static final String COLONNE_DUREE = "duree";
 private static final int COLONNE_DUREE_ID = 2;

 private static final String REQUETTE_CREATION_BD = "create table "
   + TABLE_PROGRAMMES + "(" + COLONNE_ID
   + "techkey integer PRIMARY KEY  AUTOINCREMENT," + COLONNE_EXO
   + "text not null, " + COLONNE_DUREE + "text not null"
   + ")";


 public DatabaseHelper(Context context)
 {
	  super(context, DATABASE_NAME, null, DATABASE_VERSION);
	  db = getWritableDatabase();
 }

 /**
   * Exécuté si la DB n'existe pas.
   */
  @Override
  public void onCreate(SQLiteDatabase db)
  {
	  db.execSQL(REQUETTE_CREATION_BD);
  }

  /**
   * Exécuté chaque fois que le numéro de version de DB change.
   */
  @Override
  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
	  db.execSQL("DROP TABLE " + TABLE_PROGRAMMES + ";");
	  onCreate(db);
  }

  /**
   * Insère un exercice dans la DB sur base du POJO Personne.
   */
  public long insertExo(Effort effort) {
	  ContentValues exoToInsert = new ContentValues();
	  exoToInsert.put(COLONNE_EXO, effort.getExercice());
	  exoToInsert.put(COLONNE_DUREE, effort.getDuree());
	  return db.insert(TABLE_PROGRAMMES, null, exoToInsert);
  }



  /**
   * Charge le contenu de la table Programmes
   * et retourne ce contenu sous la forme d'une liste de NOM + " " + PRENOM;
   */

 /* private Effort cursorToEffort(Cursor c)
  {
   // Si la requette ne renvoie pas de resultat.
   if (c.getCount() == 0)
    return null;

   Effort retEffort = new Effort();
   // Extraction des valeurs depuis le curseur.
   retEffort.setId(c.getInt(COLONNE_ID_ID));
   retEffort.setExercice(c.getString(COLONNE_EXO_ID));
   retEffort.setDuree(c.getInt(COLONNE_DUREE_ID));
   //ferme le curseur pour liberer les recssources
   c.close();
   return retEffort;
  }


  private ArrayList<Effort> cursorToEfforts(Cursor c)
  {
  //Si la requette ne renvoie pas de resultat
  if (c.getCount() == 0)
    return new ArrayList<Effort>(0);


	  ArrayList<Effort> retEfforts = new ArrayList<Effort>(c.getCount());
	  c.moveToFirst();
	  do
	  {
	   Effort effort = new Effort();
	   effort.setId(c.getInt(COLONNE_ID_ID));
	   effort.setExercice(c.getString(COLONNE_EXO_ID));
    effort.setDuree(c.getInt(COLONNE_DUREE_ID));
    retEfforts.add(effort);
	  } while (c.moveToNext());
	  //Ferme le curseur pour liberer les ressources
	  c.close();
	  return retEfforts;
  }
  */

  public ArrayList<String> getprogramme() {
	  ArrayList<String> output = new ArrayList<String>();

	  String[] colonnesARecup = new String[] { COLONNE_EXO, COLONNE_DUREE };

	  Cursor cursorResults = db.query(TABLE_PROGRAMMES, colonnesARecup, null,
			  null, null,null, "exercice asc, duree asc", null);
	  if (null != cursorResults) {
		  if (cursorResults.moveToFirst()) {
			  do {

				  String exerciceduree = cursorResults.getString(COLONNE_EXO_ID)
						  + " " + cursorResults.getString(COLONNE_DUREE_ID);
				  output.add(exerciceduree);
			  } while (cursorResults.moveToNext());
		  } // end§if
	  }

	  return output;
  }
}

Lien vers le commentaire
Partager sur d’autres sites

Ton erreur est dans la création de ta table : tu as oublié les espaces entre les noms des colonnes et les types....

du coup ta colonne exercice se nomme en fait exercicetext....ajoute des espace avant techkey et les deux texts présents après colonne_exo et colonne_duree

private static final String REQUETTE_CREATION_BD = "create table "

+ TABLE_PROGRAMMES + "(" + COLONNE_ID

+ "techkey integer PRIMARY KEY AUTOINCREMENT," + COLONNE_EXO

+ "text not null, " + COLONNE_DUREE + "text not null"

+ ")";

Lien vers le commentaire
Partager sur d’autres sites

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...