gostaria de saber como proceder neste exercicio!
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!