Aller au contenu

Problème d'insertion


Recommended Posts

Bonjour,

Débutant en programmation Android je dois faire une application pour mes études

L'application est une liste de recette sur laquelle on doit pouvoir effectuer plusieurs actions.

J'ai un problème lorsque je veux insérer une table dans ma liste de recette via un menu

Code du menu :

public class MenuActivity extends Activity
{
GestionBDD recetteBdd = new GestionBDD(this);
Context monContext = this;
String categorie ="";

public boolean onCreateOptionsMenu(Menu menu)
{

	MenuInflater inflater = getMenuInflater();
	inflater.inflate(R.menu.options_menu, menu);
	return true;
}

public boolean onOptionsItemSelected(MenuItem item) {
	this.setContentView(R.layout.ajout_recette);
	Button btEnregRecette = (Button) findViewById(R.id.button);

	final TextView titre = (TextView) findViewById(R.id.champTitre);


	btEnregRecette.setOnClickListener(new Button.OnClickListener() {
		public void onClick(View v) {
			final TextView titre = (TextView) findViewById(R.id.champTitre);
			RadioGroup radiogroup = (RadioGroup) findViewById(R.id.groupeBouton);
			int boutonRadioCoche = radiogroup.getCheckedRadioButtonId();

			switch(boutonRadioCoche)
			{
			case R.id.btnEntree :
				categorie = "Entrée";
			case R.id.btnPlat :
				categorie = "Plat";
			case R.id.btnDessert :
				categorie = "Dessert";
			}
			recetteBdd.open();
			Recette recette = new Recette(titre.getText().toString(),categorie);
			recetteBdd.insertRecette(recette);
			Intent monIntent= new Intent(monContext,CookingRawActivity.class);
			startActivity(monIntent);
			recetteBdd.close();

		}

	});
	return true;

}
}

Ma base de donnée :

public class MaBase extends SQLiteOpenHelper {

public static final String MABDD_NAME = "MaBDD.db";
public static final int MABDD_VERSION = 1;

public static final String TABLE_RECETTE ="table_recette";
public static final String COL_ID = "ID";
public static final String COL_TITRE = "TITRE";
public static final String COL_CATEGORIE = "CATEGORIE";
public static final String COL_TPSPREP = "TPSPREP";
public static final String COL_TPSCUISS = "TPSCUISS";

private static final String CREATE_BDD = "CREATE TABLE "+ TABLE_RECETTE + " (" + COL_ID +
" INTEGER PRIMARY KEY AUTOINCREMENT, "
+ COL_TITRE+ " TEXT NOT NULL,"
+ COL_CATEGORIE +" TEXT NOT NULL,"
+COL_TPSPREP + " INTEGER NOT NULL,"
+COL_TPSCUISS + " INTEGER NOT NULL);";

public MaBase (Context context)
{
	super(context,MABDD_NAME,null,MABDD_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db)
{
	db.execSQL(CREATE_BDD);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
	db.execSQL("DROP TABLE "+TABLE_RECETTE+";");
	onCreate(db);

}

}

"Bout" de ma gestion de base de donnée qui bug :

public class GestionBDD {
//Les variables
private SQLiteDatabase bdd;
private MaBase maBase;
private String[] colonnes = { MaBase.COL_ID, MaBase.COL_TITRE,
		MaBase.COL_CATEGORIE };

//Méthode d'insertion de recette
public Recette insertRecette(Recette recette) {

	ContentValues values = new ContentValues();
	values.put(MaBase.COL_TITRE, recette.getTitre());
	values.put(MaBase.COL_CATEGORIE, recette.getCategorie());
	long insertId = bdd.insert(MaBase.TABLE_RECETTE, null, values);
	Cursor cursor = bdd.query(MaBase.TABLE_RECETTE, colonnes, MaBase.COL_ID
			+ " = " + insertId, null, null, null, null);
	cursor.moveToFirst();
	return cursorToRecette(cursor);
}

En utilisant le debug je me suis rendu compte que ma variable insertId me renvoyer comme valeur -1 d'où le fait que je ne puisse pas insérer dans ma liste.

Donc voilà je cherche quelqu'un pouvait m'expliquer pourquoi cette variable me renvoi -1.

Pour ceux qui veulent le code de la classe principale :

public class CookingRawActivity extends MenuActivity implements AdapterView.OnItemClickListener{
/** Called when the activity is first created. */
GestionBDD recetteBdd = new GestionBDD(this);
//MaBase mabase= new MaBase(this);


public void onCreate(Bundle savedInstanceState)
{
	super.onCreate(savedInstanceState);
	recetteBdd.open();// ouverture de la base de donnée

	//mabase.onCreate(recetteBdd.getBDD()); //REMISE A 0 de la base.
	this.setContentView(R.layout.liste_recette);// ouverture de ma page xml
	ListView mPhotosList = (ListView) findViewById(android.R.id.list);

	final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
			android.R.layout.simple_list_item_1,recetteBdd.renvoiListeRecette());

	mPhotosList.setAdapter(adapter);
	mPhotosList.setOnItemClickListener(this);

	recetteBdd.close();//fermeture de ma base

}

public void onItemClick(AdapterView parent, View v, int position, long id) {
	setContentView(R.layout.recette_info);//on appelle notre xml
	final TextView nomrecette = (TextView) findViewById(R.id.nomRecette);
	final TextView larecette = (TextView) findViewById(R.id.nomCategorie);
	recetteBdd.open();
	long idRecette = id;
	String[] aTableauInfoRecette = recetteBdd.infoRecette(idRecette);

	nomrecette.setText(aTableauInfoRecette[0]);//affichage du nom de la recette
	larecette.setText(aTableauInfoRecette[1]);// affichage de la recette
	recetteBdd.close();
}
}

Petite précision : mon code marché avant que j'utilise la remise à 0 que j'ai mis en commentaire (je pense que le problème vient de là .

Merci pour tous ceux qui ont lu tout le poste :) et qui sont prêts à m'aider.

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...