PDA

View Full Version : Creazione database SQLite Android


ms91
19-01-2015, 23:21
Ciao a tutti devo realizzare un database SQLite per un applicazione Android, seguendo diverse guide ho realizzato le classi DatadaseHelper e DbAdapter, che ho messo nello stesso package e che vedete di seguito:


package com.android.fr.tuttodb;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

/**
* Created by Marcello on 18/01/2015.
*/
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "forrest_db.db";
private static final int DATABASE_VERSION = 1;
// Lo statement SQL di creazione del database
private static final String DATABASE_CREATE = "create table allenamenti (_id integer primary key autoincrement, stringaAllenamento text not null);";

// Costruttore
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
// Questo metodo viene chiamato durante la creazione del database
@Override
public void onCreate(SQLiteDatabase database) {
database.execSQL(DATABASE_CREATE);
}
// Questo metodo viene chiamato durante l'upgrade del database, ad esempio quando viene incrementato il numero di versione
@Override
public void onUpgrade( SQLiteDatabase database, int oldVersion, int newVersion ) {

database.execSQL("DROP TABLE IF EXISTS forrest_db");
onCreate(database);

}



}



package com.android.fr.tuttodb;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;

/**
* Created by Marcello on 19/01/2015.
*/
public class DbAdapter {
@SuppressWarnings("unused")
private static final String LOG_TAG = DbAdapter.class.getSimpleName();

private Context context;
private SQLiteDatabase database;
private DatabaseHelper dbHelper;

// Database fields
private static final String DATABASE_TABLE = "forrest_db";

public static final String ID_ALLENAMENTO = "_id";
public static final String ALLENAMENTO = "name";

public DbAdapter(Context context) {
this.context = context;
}
public DbAdapter open() throws SQLException {
dbHelper = new DatabaseHelper(context);
database = dbHelper.getWritableDatabase();
return this;
}
public void close() {
dbHelper.close();
}
private ContentValues createContentValues(String stringaAllenamento) {
ContentValues values = new ContentValues();
values.put( ALLENAMENTO, stringaAllenamento );

return values;
}
//crea un allenamento
public long creaAllenamento(String stringaAllenamento ) {
ContentValues initialValues = createContentValues(stringaAllenamento);
return database.insertOrThrow(DATABASE_TABLE, null, initialValues);
}
//aggiorna allenamento
public boolean updateAllenamento( long IDallenamento, String stringaAllenamento ) {
ContentValues updateValues = createContentValues(stringaAllenamento);
return database.update(DATABASE_TABLE, updateValues, ID_ALLENAMENTO + "=" + IDallenamento, null) > 0;
}
//elimina allenamento
public boolean deleteAllenamento(long IDallenamento) {
return database.delete(DATABASE_TABLE, ID_ALLENAMENTO + "=" + IDallenamento, null) > 0;
}

//fetch degli allenamenti (non dovrebbe servire)
public Cursor fetchAllAllenamenti() {
return database.query(DATABASE_TABLE, new String[] { ID_ALLENAMENTO, ALLENAMENTO}, null, null, null, null, null);
}
//fetch degli allenamenti mediante filtro
public Cursor fetchAllenamentiByFilter(String filter) {
Cursor mCursor = database.query(true, DATABASE_TABLE, new String[] {
ID_ALLENAMENTO, ALLENAMENTO },
ALLENAMENTO + " like '%"+ filter + "%'", null, null, null, null, null);

return mCursor;
}
}


Ora mi sapreste spiegare come procedere per creare il database ed accedervi?

Ho provato a scrivere il seguente codice nella classe Main dell'applicazione ma non mi vengono riconosciuti i metodi di entrambe le classi :confused:

public class testDb {
private SQLiteDatabase database;
private DatabaseHelper db;
db.onUpgrade(db);


public long createAllenamento(String stringaAllenamento ) {
ContentValues initialValues = createContentValues(stringaAllenamento);
return database.insertOrThrow(DATABASE_TABLE, null, initialValues);
}

Ringrazio in anticipo chiunque mi dia una mano!!

ms91
20-01-2015, 10:32
Grazie per la risposta, ho già visto la guida ed in effetti e molto chiara, aiuta a costruire le classi che ho già scritto ma non è spiegato come utilizzarle.