Montar DAO

10/06/2013

0

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

Responder

Posts

10/06/2013

Frederico Brigatte***

Ninguém?
Responder

11/06/2013

Frederico Brigatte***

Ninguém pra ajudar?
Responder

15/06/2013

Marcelo Senaga

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.
Responder

15/06/2013

Frederico Brigatte***

Tem como montar pra mim como seria?
Responder

17/06/2013

Frederico Brigatte***

Alguém ajuda??
Responder

18/06/2013

Marcelo Senaga

Veja se isso te ajuda:

http://yuriadamsmaia.wordpress.com/2011/03/30/desenvolver-para-android-persistencia-com-sqlite-i-criando-o-modelo-e-dao/

Responder

18/06/2013

Frederico Brigatte***

Veja se entendi o artigo, obrigado pelo retorno. Pra cada tabela que tiver, vou ter que criar uma PessoaDAO, VeiculoDAO, TipoDAO......, certo?
Responder

19/06/2013

Marcelo Senaga

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.
Responder

19/06/2013

Frederico Brigatte***

Teria um jeito mais fácil de montar os create tables? O que recomenda? Poderia dar um exemplo aqui?
Responder

07/07/2013

Marcelo Senaga

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.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar