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!
Gestore del database con creazione della tabellacodice: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); } } }
Classe ricette con tutti i metodi get e set per le singole ricette la trovate QUIcodice: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(); } }
Errore logcat
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'aiutocodice: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(?,?,?,?,?,?,?,?,?);

LinkBack URL
About LinkBacks
Rispondi quotando