gostaria de saber como proceder neste exercicio!
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
gostaria de saber como proceder neste exercicio!
Po, cara. Imagino que é só pra criar o modelo da maneira como pedem e inserir o código na box que tem abaixo!
Ih, cara! Esquece.. rs. Achei que sua dúvida era relativa ao exercício 1! =P
Bom Thiago você deve criar uma variável private to tipo SQLiteOpenHelper, e elimar a herança. Tente fazer sozinho para poder fixar melhor o conteúdo, abaixo esta o código de como deve ficar para sanar possíveis duvidas.
package br.com.caelum.cadastro.dao;
import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import br.com.caelum.cadastro.modelo.Aluno;
public class AlunoDAO {
private SQLiteOpenHelper db;
private static final String DATABASE = "FJ57";
private static final int VERSAO = 1;
private static final String TABELA = "CadastroCaelum";
private static final String SQL = "CREATE TABLE " + TABELA
+ "(id INTEGER PRIMARY KEY," + " nome TEXT UNIQUE NOT NULL,"
+ " telefone TEXT," + " endereco TEXT," + " site TEXT,"
+ " nota REAL," + " foto TEXT" + ");";
public AlunoDAO(Context context) {
db = new SQLiteOpenHelper(context, DATABASE, null, VERSAO) {
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion,
int newVersion) {
db.execSQL(SQL);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("DROP TABLE IF EXISTS " + DATABASE + ";");
onCreate(db);
}
};
}
public void inserir(Aluno aluno) {
ContentValues values = toValues(aluno);
db.getWritableDatabase().insert(TABELA, null, values);
}
private ContentValues toValues(Aluno aluno) {
ContentValues values = new ContentValues();
values.put("nome", aluno.getNome());
values.put("telefone", aluno.getTelefone());
values.put("endereco", aluno.getEndereco());
values.put("site", aluno.getSite());
values.put("nota", aluno.getNota());
values.put("foto", aluno.getFoto());
return values;
}
public void close() {
db.close();
}
}
Bom pelo que estudei uma das formas de realizar esse exercício da forma solicitada é da seguinte forma:
-Primeiro eu criei um daohelper que estende de SQLiteOpenHelper
tentei fazer com que o daohelper fique o mais genérico possível, para que os próximos dao's não precisem estender do sqliteopenhelper
public class DAOHelper extends SQLiteOpenHelper {
private static final String DATABASE = "FJ57";
private static final int VERSAO = 1;
private static final String TABELA_CADATROCAELUM = "CREATE TABLE CadastroCaelum "
+ " (id INTEGER PRIMARY KEY, "
+ " nome TEXT UNIQUE NOT NULL, telefone TEXT, endereco TEXT, "
+ " site TEXT, nota REAL, foto TEXT);";
private static String TABELA;
public DAOHelper(Context context, String tabela) {
super(context, DATABASE, null, VERSAO);
TABELA = tabela;
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(TABELA_CADATROCAELUM);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
String dll = "DROP TABLE IF EXIST " + TABELA;
db.execSQL(dll);
this.onCreate(db);
}
public void insert(ContentValues values) {
getWritableDatabase().insert(TABELA, null, values);
}
public Cursor listar(String[] colunas) {
Cursor cursor = getWritableDatabase().query(TABELA, colunas, null,
null, null, null, null);
return cursor;
}
}
Depois fiz as seguintes alterações no alunoDao
public class AlunoDAO extends DAOHelper {
private static final String TABELA = "CadastroCaelum";
public AlunoDAO(Context context) {
super(context, TABELA);
}
public void insert(Aluno aluno) {
insert(toValues(aluno));
}
private ContentValues toValues(Aluno aluno) {
ContentValues values = new ContentValues();
values.put("nome", aluno.getNome());
values.put("site", aluno.getSite());
values.put("endereco", aluno.getEndereco());
values.put("telefone", aluno.getTelefone());
values.put("nota", aluno.getNota());
values.put("foto", aluno.getFoto());
return values;
}
}
Dá uma analisada no código e se tiver duvida posta ai.
Oi Thiago! A ideia é exatamente essa que o Ícaro descreveu!