Montar DAO
10/06/2013
0
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***
Posts
15/06/2013
Marcelo Senaga
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.
18/06/2013
Marcelo Senaga
http://yuriadamsmaia.wordpress.com/2011/03/30/desenvolver-para-android-persistencia-com-sqlite-i-criando-o-modelo-e-dao/
18/06/2013
Frederico Brigatte***
19/06/2013
Marcelo Senaga
Exatamente, um para cada tabela. Geralmente eu faço isso também.
19/06/2013
Frederico Brigatte***
07/07/2013
Marcelo Senaga
Mas até hoje fiz tudo "na unha" mesmo.
Clique aqui para fazer login e interagir na Comunidade :)