Montar DAO
Boa noite meus amigos,
Tenho a seguinte classe Adapter:
Gostaria de separar as coisas, deixar somente no Adapter a criação do banco e tabelas e na classe TipoVeiculoDAO os métodos CRUD. Alguém me ajudar a montar?
Segue classe TipoVeiculoDAO:
Tenho a seguinte classe Adapter:
package br.me.aquasystem.banco;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
public class DbAdapter {
private static final String DATABASE_NAME = "bancoaqua";
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_TABLE_CLIENTES = "clientes";
private static final String DATABASE_TABLE_CARROS = "carros";
private static final String DATABASE_TABLE_TIPO_VEICULO = "tipo_veiculo";
private static final String DATABASE_TABLE_SERVICOS = "servicos";
private static final String DATABASE_TABLE_HORARIOS = "horarios";
private static final String DATABASE_TABLE_OS = "os";
// CAMPOS DA TABELA CLIENTES
public static final String KEY_ID_CLI = "_id";
public static final String KEY_NOME = "nome";
public static final String KEY_ENDERECO = "endereco";
public static final String KEY_TELEFONE = "telefone";
public static final String KEY_CELULAR = "celular";
public static final String KEY_EMAIL = "email";
// CAMPOS DA TABELA CARROS
public static final String KEY_ID_CARRO = "_id";
public static final String KEY_IDCLIENTE_CARRO = "id_cliente";
public static final String KEY_IDTIPO_CARRO = "id_tipo_carro";
public static final String KEY_MODELO = "car_modelo";
public static final String KEY_PLACA = "car_placa";
// CAMPOS DA TABELA TIPO DE VEICULO
public static final String KEY_ID_TIP = "_id";
public static final String KEY_TIPDESC = "tip_descricao";
// CAMPOS DA TABELA SERVICOS
public static final String KEY_ID_SER = "_id";
public static final String KEY_IDTIPO_SER = "id_tipo_carro";
public static final String KEY_DESCRICAO_SER = "ser_descricao";
public static final String KEY_VALOR = "ser_valor";
// CAMPOS DA TABELA HORARIOS
public static final String KEY_ID_HOR = "_id";
public static final String KEY_HORARIO = "hor_horario";
// CAMPOS DA TABELA OS
public static final String KEY_ID_OS = "_id";
public static final String KEY_IDCLIENTE_OS = "id_cliente";
public static final String KEY_IDSERVICO_OS = "id_servico";
public static final String KEY_IDHORARIO_OS = "id_horario";
public static final String KEY_DATA = "os_data";
// CRIA A TABELA CLIENTES
private static final String DATABASE_CREATE_CLIENTES = "create table " + DATABASE_TABLE_CLIENTES + " ("
+ KEY_ID_CLI + " integer primary key autoincrement, "
+ KEY_NOME + " text, "
+ KEY_ENDERECO + " text, "
+ KEY_TELEFONE + " text, "
+ KEY_CELULAR + " text, "
+ KEY_EMAIL + " text);";
// CRIA A TABELA CARROS
private static final String DATABASE_CREATE_CARROS = "create table " + DATABASE_TABLE_CARROS + " ("
+ KEY_ID_CARRO + " integer primary key autoincrement, "
+ KEY_IDCLIENTE_CARRO + " integer, "
+ KEY_IDTIPO_CARRO + " integer, "
+ KEY_MODELO + " text, "
+ KEY_PLACA + " text, FOREIGN KEY ( " + KEY_IDCLIENTE_CARRO
+ " ) REFERENCES " + DATABASE_TABLE_CLIENTES + " (" + KEY_ID_CLI
+ " ) ON DELETE RESTRICT ON UPDATE CASCADE , FOREIGN KEY ( "
+ KEY_IDTIPO_CARRO + " ) REFERENCES " + DATABASE_TABLE_TIPO_VEICULO + " ("
+ KEY_IDTIPO_CARRO + " ) ON DELETE RESTRICT ON UPDATE CASCADE);";
// CRIA A TABELA TIPO_CARRO
private static final String DATABASE_CREATE_TIPO_CARRO = "create table " + DATABASE_TABLE_TIPO_VEICULO + " ("
+ KEY_ID_TIP + " integer primary key autoincrement, "
+ KEY_TIPDESC + " text);";
// CRIA A TABELA SERVICOS
private static final String DATABASE_CREATE_SERVICOS = "create table " + DATABASE_TABLE_SERVICOS + " ("
+ KEY_ID_SER + " integer primary key autoincrement, "
+ KEY_IDTIPO_SER + " integer, "
+ KEY_DESCRICAO_SER + " text, "
+ KEY_VALOR + " text, FOREIGN KEY ( " + KEY_IDTIPO_SER
+ " ) REFERENCES " + DATABASE_TABLE_TIPO_VEICULO + " (" + KEY_IDTIPO_SER
+ " ) ON DELETE RESTRICT ON UPDATE CASCADE);";
// CRIA A TABELA HORARIOS
private static final String DATABASE_CREATE_HORARIOS = "create table " + DATABASE_TABLE_HORARIOS + " ("
+ KEY_ID_HOR + " integer primary key autoincrement, "
+ KEY_HORARIO + " text);";
// CRIA A TABELA OS
private static final String DATABASE_CREATE_OS = "create table " + DATABASE_TABLE_OS + " ("
+ KEY_ID_OS + " integer primary key autoincrement, "
+ KEY_IDCLIENTE_OS + " integer, "
+ KEY_IDSERVICO_OS + " integer, "
+ KEY_IDHORARIO_OS + " integer ,"
+ KEY_MODELO + " text, "
+ KEY_PLACA + " text, FOREIGN KEY ( " + KEY_IDCLIENTE_OS
+ " ) REFERENCES " + DATABASE_TABLE_CLIENTES + " (" + KEY_ID_CLI
+ " ) ON DELETE RESTRICT ON UPDATE CASCADE, FOREIGN KEY ( "
+ KEY_IDSERVICO_OS + " ) REFERENCES "
+ DATABASE_TABLE_SERVICOS + " (" + KEY_IDSERVICO_OS
+ " ) ON DELETE RESTRICT ON UPDATE CASCADE, FOREIGN KEY ( "
+ KEY_IDHORARIO_OS + " ) REFERENCES " + DATABASE_TABLE_HORARIOS + " ("
+ KEY_IDHORARIO_OS + " ) ON DELETE RESTRICT ON UPDATE CASCADE);";
private final Context mCtx;
private DatabaseHelper mDbHelper;
private SQLiteDatabase mDb;
public DbAdapter(Context ctx){
this.mCtx = ctx;
}
public DbAdapter open() throws SQLiteException{
if(isClosed()){
mDbHelper = new DatabaseHelper(mCtx);
mDb = mDbHelper.getWritableDatabase();
}
return this;
}
public void close(){
mDbHelper.close();
}
public boolean isClosed(){
return mDb == null || !mDb.isOpen();
}
// TABELA TIPO VEÍCULO : KEY_ID_TIP, KEY_TIPDESC
public Cursor getTodosTipoVeiculo(){
return mDb.query(DATABASE_TABLE_TIPO_VEICULO, null, null, null, null, null, null);
}
// GRAVAR TIPO VEÍCULO
public long gravarTipoVeiculo(String tipo){
ContentValues valores = new ContentValues();
valores.put(KEY_TIPDESC, tipo);
return mDb.insert(DATABASE_TABLE_TIPO_VEICULO, null, valores);
}
// APAGAR TIPO VEÍCULO
public boolean apagarTipoVeiculo(long Id){
int qt = mDb.delete(DATABASE_TABLE_TIPO_VEICULO, KEY_ID_TIP + "=" + Id, null);
return qt > 0;
}
// ALTERAR TIPO VEÍCULO
public boolean alterarTipoVeiculo(long Id, String tipo){
ContentValues valores = new ContentValues();
valores.put(KEY_TIPDESC, tipo);
return mDb.update(DATABASE_TABLE_TIPO_VEICULO, valores, KEY_ID_TIP + "=" + Id, null) > 0;
}
// TIPO VEÍCULO POR ID
public Cursor getTipoVeiculo(long Id){
return mDb.query(DATABASE_TABLE_TIPO_VEICULO, null, KEY_ID_TIP + "=" + Id, null, null, null, null);
}
// TIPO VEÍCULO POR DESCRICAO
public Cursor getTipoVeiculoPorDescricao(String nomeString){
String[] selectionArgs = {nomeString + "%"};
// return mDb.query(DATABASE_TABLE_CLIENTES, null, KEY_NOME + "=" + selectionArgs, null, null, null, null);
return mDb.rawQuery("SELECT * FROM tipo_veiculo WHERE tip_descricao like ?", selectionArgs);
}
private class DatabaseHelper extends SQLiteOpenHelper{
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(DATABASE_CREATE_CLIENTES);
db.execSQL(DATABASE_CREATE_CARROS);
db.execSQL(DATABASE_CREATE_TIPO_CARRO);
db.execSQL(DATABASE_CREATE_SERVICOS);
db.execSQL(DATABASE_CREATE_HORARIOS);
db.execSQL(DATABASE_CREATE_OS);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
}
Gostaria de separar as coisas, deixar somente no Adapter a criação do banco e tabelas e na classe TipoVeiculoDAO os métodos CRUD. Alguém me ajudar a montar?
Segue classe TipoVeiculoDAO:
package br.me.aquasystem.banco;
public class TipoVeiculoDAO {
}
Frederico Brigatte***
Curtidas 0
Respostas
Frederico Brigatte***
10/06/2013
Ninguém?
GOSTEI 0
Frederico Brigatte***
10/06/2013
Ninguém pra ajudar?
GOSTEI 0
Marcelo Senaga
10/06/2013
Bom dia. Por que você usou o padrão adapter para a criação do DB?
E para a montagem do DAO, costumo criar uma interface com os métodos CRUD (Repository) e depois a implementação do DAO. Esse DAO provavelmente irá conter seu adapter, para criar a conexão ao banco.
E para a montagem do DAO, costumo criar uma interface com os métodos CRUD (Repository) e depois a implementação do DAO. Esse DAO provavelmente irá conter seu adapter, para criar a conexão ao banco.
GOSTEI 0
Frederico Brigatte***
10/06/2013
Tem como montar pra mim como seria?
GOSTEI 0
Frederico Brigatte***
10/06/2013
Alguém ajuda??
GOSTEI 0
Marcelo Senaga
10/06/2013
Veja se isso te ajuda:
http://yuriadamsmaia.wordpress.com/2011/03/30/desenvolver-para-android-persistencia-com-sqlite-i-criando-o-modelo-e-dao/
http://yuriadamsmaia.wordpress.com/2011/03/30/desenvolver-para-android-persistencia-com-sqlite-i-criando-o-modelo-e-dao/
GOSTEI 0
Frederico Brigatte***
10/06/2013
Veja se entendi o artigo, obrigado pelo retorno. Pra cada tabela que tiver, vou ter que criar uma PessoaDAO, VeiculoDAO, TipoDAO......, certo?
GOSTEI 0
Marcelo Senaga
10/06/2013
Veja se entendi o artigo, obrigado pelo retorno. Pra cada tabela que tiver, vou ter que criar uma PessoaDAO, VeiculoDAO, TipoDAO......, certo?
Exatamente, um para cada tabela. Geralmente eu faço isso também.
GOSTEI 0
Frederico Brigatte***
10/06/2013
Teria um jeito mais fácil de montar os create tables? O que recomenda? Poderia dar um exemplo aqui?
GOSTEI 0
Marcelo Senaga
10/06/2013
Do jeito que você esta fazendo está correto. Você poderia usar um ORM (tipo Hibernate), para deixar mais OO.
Mas até hoje fiz tudo "na unha" mesmo.
Mas até hoje fiz tudo "na unha" mesmo.
GOSTEI 0