CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: 9mm con ben 2 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: 9mm con ben 11 Thanks ricevuti negli ultimi sette giorni
Utente del mese: 9mm con ben 32 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 2 su 2
Discussione:

Inserimento in database sqlite

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Baby Droid


    Registrato dal
    Dec 2009
    Messaggi
    22

    Ringraziamenti
    1
    Ringraziato 2 volte in 2 Posts
    Predefinito

    Inserimento in database sqlite

    Ragazzi sto avendo un problema con la costruzione di un database di ricette! Di seguito vi posto le classi e il logcat perché non riesco proprio a capire per quale motivo nell'inserimento nella tabella i values sono tutti "?Grazie a tutti!

    Classe principale con un esempio di inserimento dentro il database!
    codice:
    import java.util.List;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.util.Log;
    import android.widget.TextView;
    
    
    public class AndroidSQLiteActivity extends Activity {
        /** Called when the activity is first created. */
        TextView nome;
        TextView piatto;
        TextView cottura;
        TextView numeroP;
        TextView ingredienti;
        TextView preparazione;
        TextView ricettaDi;
    	@Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            
            piatto=(TextView)findViewById(R.id.tipoPiatto);
            nome=(TextView)findViewById(R.id.nome);
            cottura=(TextView)findViewById(R.id.tempoCottura);
            numeroP=(TextView)findViewById(R.id.nPersone);
            ingredienti=(TextView)findViewById(R.id.ingredienti);
            preparazione=(TextView)findViewById(R.id.preparazione);
            ricettaDi=(TextView)findViewById(R.id.ricettaDi);
            
            DatabaseHandler db = new DatabaseHandler(this);
            
            /**
             * CRUD Operations
             * */
            //ricette(String nome,String tipoPiatto,int tempoCottura,int numeroP, String ingredienti,String quantita,String preparazione,String ricettaDi,String difficolta)
            // Inserting Contacts
            Log.d("Insert: ", "Inserting ..");
            
            ricette ricetta= new ricette("A","B",10,4,"C","D","E","F","G");
            
            db.addRicetta((ricetta));
    
    
     
            // Reading all contacts
            Log.d("Reading: ", "Reading all recipes..");
            List<ricette> r = db.getAllRicette();       
            
            for (ricette cn : r) {
                String log = "Id: "+cn.getID()+" ,Name: " + cn.getNome() + " ,Fatta da: " + cn.getcreatoreRicetta();
                nome.setText(ricetta.getNome());
                piatto.setText(ricetta.getTipoPiatto());
                cottura.setText(ricetta.getCottura());
                numeroP.setText(ricetta.getnumeroP());
                ingredienti.setText(ricetta.getIngredienti());
                preparazione.setText(ricetta.getPreparazione());
    
             // Writing Contacts to log
            //Log.d("Name: ", log);
            
            }
        }
    }
    Gestore del database con creazione della tabella
    codice:
    import java.util.ArrayList;
    import java.util.List;
    
    import android.content.ContentValues;
    import android.content.Context;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;
    
    public class DatabaseHandler extends SQLiteOpenHelper {
    
    	// All Static variables
    	// Database Version
    	private static final int DATABASE_VERSION = 1;
    
    	// Database Name
    	private static final String DATABASE_NAME = "lap2.db";
    
    	// Contacts table name
    	private static final String TABLE_ricette = "ricette";
    
    	// Contacts Table Columns names
    	private static final String KEY_ID = "id";
    	private static final String KEY_NAME = "nome";
    	private static final String KEY_tipo_Piatto = "tipoPiatto";
    	private static final String KEY_tempoCottura="tempoCottura";
    	private static final String KEY_numeroP="numeroP";
    	private static final String KEY_ingredienti="ingredienti";
    	private static final String KEY_quantita="quantita";
    	private static final String KEY_preparazione="preparazione";
    	private static final String KEY_ricettaDi="Creatore_Ricetta";
    	private static final String KEY_difficolta="difficolta";
    
    	public DatabaseHandler(Context context) {
    		super(context, DATABASE_NAME, null, DATABASE_VERSION);
    	}
    	// Creating Tables
    	
    	@Override
    	public void onCreate(SQLiteDatabase db) {
    		String CREATE_ricette_TABLE = "CREATE TABLE " + TABLE_ricette + "("
    				+ KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT,"
    				+ KEY_tipo_Piatto + " TEXT,"+ KEY_tempoCottura+" INTEGER,"+KEY_numeroP+" INTEGER,"+
    				KEY_ingredienti+" TEXT,"+KEY_quantita+" TEXT,"+KEY_preparazione+" TEXT,"+KEY_ricettaDi+" TEXT,"+KEY_difficolta+" TEXT"+ ");";
    		db.execSQL(CREATE_ricette_TABLE);
    	}
    
    	// Upgrading database
    	@Override
    	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    		// Drop older table if existed
    		db.execSQL("DROP TABLE IF EXISTS " + TABLE_ricette);
    
    		// Create tables again
    		onCreate(db);
    	}
    
    	/**
    	 * All CRUD(Create, Read, Update, Delete) Operations
    	 */
    	// Adding new ricetta
    	//ricette(String nome,String tipoPiatto,int tempoCottura,int numeroP, String ingredienti,String quantita,String preparazione,String ricettaDi,String difficolta)
    	void addRicetta(ricette r) {
    		SQLiteDatabase db = this.getWritableDatabase();
    		System.out.println("r.getNome()"+r.getNome());
    		System.out.println("r.getTipoPiatto()"+r.getTipoPiatto());
    		System.out.println("r.getCottura()"+r.getCottura());
    		System.out.println("r.getNumeroP()"+r.getnumeroP());
    		System.out.println("r.getIngredienti()"+r.getIngredienti());
    		System.out.println("r.getQuantita()"+r.getQuantita());
    		System.out.println("r.getPreparazione()"+r.getPreparazione());
    		System.out.println("r.getCreatoreRicetta()"+r.getcreatoreRicetta());
    		System.out.println("r.getDifficolta()"+r.getDifficolta());
    		
    		
    		ContentValues values = new ContentValues();
    		values.put(KEY_NAME, r.getNome()); 
    		values.put(KEY_tipo_Piatto, r.getTipoPiatto());
    		values.put(KEY_tempoCottura, r.getCottura());
    		values.put(KEY_numeroP, r.getnumeroP());
    		values.put(KEY_ingredienti, r.getIngredienti());
    		values.put(KEY_quantita, r.getQuantita());
    		values.put(KEY_preparazione, r.getPreparazione());
    		values.put(KEY_ricettaDi,r.getcreatoreRicetta());
    		values.put(KEY_difficolta, r.getDifficolta());
    		
    		// Inserting Row
    		db.insert(TABLE_ricette, null, values);
    		db.close(); // Closing database connection
    		System.out.println("ho chiuso il collegamento con il database!");
    	}
    
    	// Getting single ricetta
    	ricette getRicette(int id) {
    		SQLiteDatabase db = this.getReadableDatabase();
    
    		Cursor cursor = db.query(TABLE_ricette, new String[] { KEY_ID,
    				KEY_NAME, KEY_tipo_Piatto,KEY_tempoCottura,KEY_numeroP,
    				KEY_ingredienti,KEY_quantita,KEY_preparazione,KEY_ricettaDi,
    				KEY_difficolta }, KEY_ID + "=?",
    				new String[] { String.valueOf(id) }, null, null, null, null);
    		if (cursor != null)
    			cursor.moveToFirst();
    		//int _ID, String nome,String tipoPiatto,int tempoCottura,int nnumeroP, String ingredienti,String quantita,String preparazione,String ricettaDi,String difficolta
    		ricette r = new ricette(Integer.parseInt(cursor.getString(0)),
    				cursor.getString(1), cursor.getString(2),Integer.parseInt(cursor.getString(3)),Integer.parseInt(cursor.getString(4)),
    				cursor.getString(5),cursor.getString(6),cursor.getString(7),cursor.getString(8),cursor.getString(9));
    		// return ricette
    		return r;
    	}
    
    	
    	// Getting All ricette
    	public List<ricette> getAllRicette() {
    		List<ricette> ricetteList = new ArrayList<ricette>();
    		// Select All Query
    		String selectQuery = "SELECT  * FROM " + TABLE_ricette;
    
    		SQLiteDatabase db = this.getWritableDatabase();
    		Cursor cursor = db.rawQuery(selectQuery, null);
    
    		// looping through all rows and adding to list
    		if (cursor.moveToFirst()) {
    			do {
    				ricette r= new ricette();
    				r.setID(Integer.parseInt(cursor.getString(0)));
    				r.setNome(cursor.getString(1));
    				r.setTipoPiatto(cursor.getString(2));
    				r.setCottura(Integer.parseInt(cursor.getString(3)));
    				r.setnumeroP(Integer.parseInt(cursor.getString(4)));
    				r.setIngredienti(cursor.getString(5));
    				r.setQuantita(cursor.getString(6));
    				r.setPreparazione(cursor.getString(7));
    				r.setcreatoreRicetta(cursor.getString(8));
    				r.setDifficolta(cursor.getString(9));
    				
    				// Adding ricetta to list
    				ricetteList.add(r);
    			} while (cursor.moveToNext());
    		}
    
    		
    		return ricetteList;
    	}
    
    	// Updating ricetta singola
    	public int updateContact(ricette r) {
    		SQLiteDatabase db = this.getWritableDatabase();
    
    		ContentValues values = new ContentValues();
    		values.put(KEY_NAME, r.getNome());
    		values.put(KEY_tipo_Piatto, r.getTipoPiatto());
    		values.put(KEY_tempoCottura, r.getCottura());
    		values.put(KEY_numeroP, r.getnumeroP());
    		values.put(KEY_ingredienti, r.getIngredienti());
    		values.put(KEY_quantita, r.getQuantita());
    		values.put(KEY_preparazione, r.getPreparazione());
    		values.put(KEY_ricettaDi,r.getcreatoreRicetta());
    		values.put(KEY_difficolta, r.getDifficolta());
    		// updating row
    		return db.update(TABLE_ricette, values, KEY_ID + " = ?",
    				new String[] { String.valueOf(r.getID()) });
    	}
    
    	// Deleting ricetta
    	public void deleteRicetta(ricette r) {
    		SQLiteDatabase db = this.getWritableDatabase();
    		db.delete(TABLE_ricette, KEY_ID + " = ?",
    				new String[] { String.valueOf(r.getID()) });
    		db.close();
    	}
    
    
    	// Getting ricette Count
    	public int getRicetteCount() {
    		String countQuery = "SELECT  * FROM " + TABLE_ricette;
    		SQLiteDatabase db = this.getReadableDatabase();
    		Cursor cursor = db.rawQuery(countQuery, null);
    		cursor.close();
    
    		// return count
    		return cursor.getCount();
    	}
    
    }
    Classe ricette con tutti i metodi get e set per le singole ricette la trovate QUI

    Errore logcat
    codice:
    E/Database(15649):android.database.sqlite.SQLiteException:table ricette has no column named numeroP:, while compiling: INSERT INTO ricette(numeroP,tipoPiatto,tempoCottura,nome,preparazione,quantita,difficolta,Creatore_Ricetta) VALUES(?,?,?,?,?,?,?,?,?);
    Domandona...ma perchè inserisce in modo così disordinato??Quando creo la tabella e gli passo i valori, l'ordine è sempre String nome,String tipoPiatto,int cottura,int numeroP, String ingredienti,String quantita,String preparazione,String creatoreRicetta,String difficolta dove numeroP sarebbe il numero di persone!!Grazie a tutti per l'aiuto

  2.  
  3. #2
    Androidiano


    Registrato dal
    Oct 2010
    Messaggi
    229

    Ringraziamenti
    27
    Ringraziato 77 volte in 35 Posts
    Predefinito

    I valori nel values sono ? perchè probabilmente sta facendo il "prepare" della query, dopo farà il "bind" dei parametri, anche se tu non vedrai la cosa direttamente.

    L'errore che ti da invece è che non trova la colonna numeroP nella tua tabella, quindi io mi concentrerei sul perchè non viene creata o modificata correttamente la tabella.

    in bocca al lupo.
    Felice possessore di un LG O1 con GingerLOL 1.5.2 e di un Mediacom Smartpad 810c con Pistoneone 4.2.1 / 5.0 Samsung Galaxy Tab 10.1 P7510 (originale per ora) Mediacom Smartpad 715i (ROM smartpao 2.1), Mediacom Smartpad 842i (ROM smartpao 2.0)
    Mini-Forum-FAQ per Mediacom Smartpad 810c

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy