Montar DAO

Android

10/06/2013

Boa noite meus amigos,

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***

Frederico Brigatte***

Curtidas 0

Respostas

Frederico Brigatte***

Frederico Brigatte***

10/06/2013

Ninguém?
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

10/06/2013

Ninguém pra ajudar?
GOSTEI 0
Marcelo Senaga

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.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

10/06/2013

Tem como montar pra mim como seria?
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

10/06/2013

Alguém ajuda??
GOSTEI 0
Marcelo Senaga

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/

GOSTEI 0
Frederico Brigatte***

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

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***

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

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.
GOSTEI 0
POSTAR