Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Android] SQLite

    1 mai 2012 à 2:18:52

    Bonjour,

    Je travaille une application sous Android, cette application permet d'ajouter des produits dans une bdd sous SQLite.

    Voilà ma fonction principale

    package com.formation.sqlite;
    
    import android.app.ListActivity;
    import android.database.Cursor;
    import android.os.Bundle;
    import android.os.SystemClock;
    import android.util.Log;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.SimpleCursorAdapter;
    
    public class SQLiteActivity extends ListActivity implements OnClickListener {
    	
    	DBAdapter db;
    	Button btnAjout;
    	
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            
            
            btnAjout = (Button) findViewById(android.R.id.button1);
            btnAjout.setOnClickListener(this);
            
            db = new DBAdapter(this);
            db.open();
            
            DataBind();
            
        }
        
        @Override
        protected void onDestroy()
        {
        	db.close();
        	super.onDestroy();
        }
        
        public void DataBind()
        {
        	Cursor c = null;
        	SimpleCursorAdapter adapter = null;
        	try{
        	
        	c = db.recupererLaListeDesProduits();
        	
        	startManagingCursor(c);
        	
        	adapter = new SimpleCursorAdapter(this, R.layout.list_item, c, new String[]{"codeBarre","titre","description"}, new int[]{R.id.textCodeBarre,R.id.textTitre,R.id.textDescription});
        	
        	}
        	catch(Exception e)
        	{
        		Log.i("TTT", e.getMessage());
        	}
        	
        	
        	setListAdapter(adapter);
        	
        	
        	
        }
    
    	@Override
    	public void onClick(View arg0) {
    		
    		long num = SystemClock.currentThreadTimeMillis();
    		
    		db.insererUnProduit(""+num, "Produit n :"+num, "Nouveau produit + num");
    		DataBind();
    	}
    }
    


    Et voilà la classe DBAdapter :

    package com.formation.sqlite;
    
    import android.content.ContentValues;
    import android.content.Context;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;
    import android.widget.Toast;
    
    public class DBAdapter{
    	
    	DatabaseHelper DBHelper;
    	Context context;
    	SQLiteDatabase db;
    	
    	public DBAdapter(Context context)
    	{
    		this.context = context;
    		DBHelper = new DatabaseHelper(context);
    	}
    	
    	public class DatabaseHelper extends SQLiteOpenHelper
    	{
    		Context context;
    
    		public DatabaseHelper(Context context) {
    			super(context, "produits", null, 1);
    			
    			this.context = context;
    		}
    
    		@Override
    		public void onCreate(SQLiteDatabase db) {
    			
    			db.execSQL("CREATE TABLE produits (_id integer primary key autoincrement, codeBarre text not null, titre text not null, description text not null)");
    		}
    
    		@Override
    		public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    			
    			Toast.makeText(context, "Mise à jour de la bdd version "+oldVersion+" vers "+newVersion, Toast.LENGTH_LONG).show();
    			db.execSQL("DROP TABLE IF EXISTS produits");
    			onCreate(db);
    		}
    		
    	}
    	
    	public DBAdapter open()
    	{
    		db = DBHelper.getWritableDatabase();
    		
    		return this;
    	}
    	
    	public void close()
    	{
    		db.close();
    	}
    	
    	public void truncate()
    	{
    		db.execSQL("DELETE FROM produits");
    	}
    
    	public long insererUnProduit(String codeBarre, String titre, String Description)
    	{
    		ContentValues values = new ContentValues();
    		values.put("codeBarre", codeBarre);
    		values.put("titre",titre);
    		values.put("description", Description);
    		
    		return db.insert("produits",null, values);
    	}
    	
    	public boolean supprimerProduit(long id)
    	{
    		return db.delete("produits", "id = "+id, null) >0;
    	}
    	
    	public Cursor recupererLaListeDesProduits()
    	{
    		return db.query("produits", new String[]{
    				"_id",
    				"codeBarre",
    				"titre",
    				"description"
    		}, null, null, null, null, null);
    	}
    	
    	
    }
    



    Le problème que au moment ou je clique sur le bouton Ajouter :

    Le msg d'info du Logcat s'affiche de mon catch de mon exception:

    05-01 00:18:03.697: I/TTT(1580): column 'codeBarre' does not exist

    Je veux bien votre aide.

    Merci d'avance
    • Partager sur Facebook
    • Partager sur Twitter
      1 mai 2012 à 2:33:45

      Bonjour,

      Je déplace ton sujet dans le bon forum et j'ai édité son titre afin qu'il soit conforme aux règles du forum de ce dernier.
      Merci de faire attention à l'avenir.

      Pour ton erreur, elle est pourtant clair. Il ne trouve pas la colonne codeBarre dans ta table SQLite.
      • Partager sur Facebook
      • Partager sur Twitter
      Si vous voulez me retrouver, rendez-vous sur ZesteDeSavoir.
        1 mai 2012 à 2:38:14

        Je vois que la colonne est ajoutée par la requete ci dessous

        db.execSQL("CREATE TABLE produits (_id integer primary key autoincrement, codeBarre text not null, titre text not null, description text not null)");
        • Partager sur Facebook
        • Partager sur Twitter

        [Android] SQLite

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown