Jump to content
Sign in to follow this  
jejefull

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;
  }
}

Share this post


Link to post
Share on other sites

Bon ba je croit qu'il n'y a pas d'utilisateur de sqlite capable de m'aider. Mais si quelqu’un a une idée je suis toujours preneur.

Voila merci d'avance

Share this post


Link to post
Share on other 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"

+ ")";

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  





×
×
  • Create New...