Tenho a seguinte Classe DbAdapter. Poderia dar uma analisada para ver se está correto? Ainda falta algumas tabelas.
package br.me.aqua.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_CARRO = "tipo_carro";
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_IDCLI = "_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_IDCARRO = "_id";
public static final String KEY_IDCLIENTE_CARRO = "id_cliente";
public static final String KEY_IDTIPO_CARRO = "id_tipo";
public static final String KEY_MODELO = "modelo";
public static final String KEY_PLACA = "placa";
// CAMPOS DA TABELA TIPO_CARRO
public static final String KEY_IDTIP = "_id";
public static final String KEY_TIPDESC = "tip_desc";
// CAMPOS DA TABELA SERVICOS
public static final String KEY_IDSER = "_id";
public static final String KEY_IDTIPO_SER = "id_tipo";
public static final String KEY_DESCRICAO_SER = "descricao";
public static final String KEY_VALOR = "valor";
// CAMPOS DA TABELA HORARIOS
public static final String KEY_IDHOR = "_id";
public static final String KEY_HORARIO = "horario";
// CAMPOS DA TABELA OS
public static final String KEY_IDCARRO_OS = "_id";
public static final String KEY_IDCLIENTE_OS = "id_cliente";
public static final String KEY_IDSERVICO = "id_servico";
public static final String KEY_IDHORARIO = "id_horario";
public static final String KEY_DATA = "data";
// CRIA A TABELA CLIENTES
private static final String DATABASE_CREATE_CLIENTES = "create table " + DATABASE_TABLE_CLIENTES + " ("
+ KEY_IDCLI + " 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_IDCARRO + " 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_IDCLI
+ " ) ON DELETE RESTRICT ON UPDATE CASCADE), FOREIGN KEY ( "
+ KEY_IDTIPO_CARRO + " ) REFERENCES " + DATABASE_TABLE_TIPO_CARRO + " ("
+ 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_CARRO + " ("
+ KEY_IDTIP + " integer primary key autoincrement, "
+ KEY_TIPDESC + " text;";
// CRIA A TABELA SERVICOS
private static final String DATABASE_CREATE_SERVICOS = "create table " + DATABASE_TABLE_SERVICOS + " ("
+ KEY_IDSER + " integer primary key autoincrement, "
+ KEY_IDTIPO_SER + " integer, "
+ KEY_DESCRICAO_SER + " text, "
+ KEY_VALOR + " text, FOREIGN KEY ( " + KEY_IDTIPO_SER
+ " ) REFERENCES " + DATABASE_TABLE_TIPO_CARRO + " (" + 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_IDHOR + " integer primary key autoincrement, "
+ KEY_HORARIO + " text);";
// CRIA A TABELA OS
private static final String DATABASE_CREATE_OS = "create table " + DATABASE_TABLE_OS + " ("
+ KEY_IDCARRO_OS + " integer primary key autoincrement, "
+ KEY_IDCLIENTE_OS + " integer, "
+ KEY_MODELO + " text, "
+ KEY_PLACA + " text, FOREIGN KEY ( " + KEY_IDCLIENTE_OS
+ " ) REFERENCES " + DATABASE_TABLE_CLIENTES + " (" + KEY_IDCLI
+ " ) ON DELETE RESTRICT ON UPDATE CASCADE), FOREIGN KEY ( "
+ KEY_IDSERVICO + " ) REFERENCES "
+ DATABASE_TABLE_SERVICOS + " (" + KEY_IDSERVICO
+ " ) ON DELETE RESTRICT ON UPDATE CASCADE), FOREIGN KEY ( "
+ KEY_IDHORARIO + " ) REFERENCES " + DATABASE_TABLE_HORARIOS + " ("
+ KEY_IDHORARIO + " ) 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 CLIENTES
// GRAVAR CLIENTE
public long gravarCliente(String nome, String endereco, String telefone, String celular, String email){
ContentValues valores = new ContentValues();
valores.put(KEY_NOME, nome);
valores.put(KEY_ENDERECO, endereco);
valores.put(KEY_TELEFONE, telefone);
valores.put(KEY_CELULAR, celular);
valores.put(KEY_EMAIL, email);
return mDb.insert(DATABASE_TABLE_CLIENTES, null, valores);
}
// ALTERAR CLIENTE
public boolean atualizarCliente(long Id, String nome, String endereco, String telefone, String celular, String email){
ContentValues valores = new ContentValues();
valores.put(KEY_NOME, nome);
valores.put(KEY_ENDERECO, endereco);
valores.put(KEY_TELEFONE, telefone);
valores.put(KEY_CELULAR, celular);
valores.put(KEY_EMAIL, email);
return mDb.update(DATABASE_TABLE_CLIENTES, valores, KEY_IDCLI + "=" + Id, null) > 0;
}
// APAGAR CLIENTE
public boolean apagarCliente(long Id){
int qt = mDb.delete(DATABASE_TABLE_CLIENTES, KEY_IDCLI + "=" + Id, null);
return qt > 0;
}
// TABELA TIPO CARRO
// GRAVAR TIPO CARRO
public long gravarTipoCarro(String tipo){
ContentValues valores = new ContentValues();
valores.put(KEY_TIPDESC, tipo);
return mDb.insert(DATABASE_TABLE_TIPO_CARRO, null, valores);
}
// ALTERAR TIPO CARRO
public boolean atualizarTipoCarro(long Id, String tipo){
ContentValues valores = new ContentValues();
valores.put(KEY_TIPDESC, tipo);
return mDb.update(DATABASE_TABLE_TIPO_CARRO, valores, KEY_IDTIP + "=" + Id, null) > 0;
}
// APAGAR TIPO CARRO
public boolean apagarTipoCarro(long Id){
int qt = mDb.delete(DATABASE_TABLE_TIPO_CARRO, KEY_IDTIP + "=" + Id, null);
return qt > 0;
}
// TABELA CARROS
// GRAVAR CARRO
public long gravarCarroCliente(String modelo, String placa, String idcliente, String idtipo){
ContentValues valores = new ContentValues();
valores.put(KEY_IDCLIENTE_CARRO, Integer.valueOf(idcliente.trim()));
valores.put(KEY_IDTIPO_CARRO, Integer.valueOf(idtipo.trim()));
valores.put(KEY_MODELO, modelo);
valores.put(KEY_PLACA, placa);
return mDb.insert(DATABASE_TABLE_CARROS, null, valores);
}
// ALTERAR CARRO
public boolean atualizarCarro(long Id, String modelo, String placa, String idcliente, String idtipo){
ContentValues valores = new ContentValues();
valores.put(KEY_IDCLIENTE_CARRO, Integer.valueOf(idcliente.trim()));
valores.put(KEY_IDTIPO_CARRO, Integer.valueOf(idtipo.trim()));
valores.put(KEY_MODELO, modelo);
valores.put(KEY_PLACA, placa);
return mDb.update(DATABASE_TABLE_CARROS, valores, KEY_IDCLI + "=" + Id, null) > 0;
}
// APAGAR CARRO
public boolean apagarCarro(long Id){
int qt = mDb.delete(DATABASE_TABLE_CARROS, KEY_IDCLI + "=" + Id, null);
return qt > 0;
}
// CONSULTAS
// TODOS OS CLIENTES
public Cursor getTodosClientes(){
return mDb.query(DATABASE_TABLE_CLIENTES, null, null, null, null, null, null);
}
// CLIENTE POR ID
public Cursor getCliente(long Id){
return mDb.query(DATABASE_TABLE_CLIENTES, null, KEY_IDCLI + "=" + Id, null, null, null, null);
}
// CLIENTE POR NOME
public Cursor getClientePorNome(String nomeString){
String[] selectionArgs = {nomeString + "%"};
// return mDb.query(DATABASE_TABLE_CLIENTES, null, KEY_NOME + "=" + selectionArgs, null, null, null, null);
return mDb.rawQuery("SELECT * FROM clientes WHERE nome like ?", selectionArgs);
}
// CARRO POR PLACA
public Cursor getCarro(String modeloString){
// return mDb.query(DATABASE_TABLE_CARROS, null, KEY_NOME + "=" + nomeString, null, null, null, null);
String[] selectionArgs = {modeloString + "%"};
return mDb.rawQuery("SELECT * FROM carros WHERE placa like ?", selectionArgs);
}
// CARRO X CLIENTE POR PLACA
public Cursor getCarroPorPlaca(String placaString){
String[] selectionArgs = {placaString};
// return mDb.rawQuery("SELECT ca.placa, ca.modelo, c.nome FROM clientes c INNER JOIN carros ca ON c._id = ca.id_cliente",null);
return mDb.rawQuery("SELECT ca.placa, ca.modelo, c._id, c.nome FROM clientes c INNER JOIN carros ca ON c._id = ca.id_cliente WHERE ca.placa = ?", selectionArgs);
}
// CARRO X CLIENTE POR NOME CLIENTE
public Cursor getCarroPorCliente(String nomeString){
String[] selectionArgs = {nomeString + "%"};
return mDb.rawQuery("SELECT ca.placa, ca.modelo, c._id, c.nome FROM clientes c INNER JOIN carros ca ON c._id = ca.id_cliente WHERE c.nome like ?", selectionArgs);
}
// CARRO X CLIENTE TODOS
public Cursor getCarrosCliente(){
return mDb.rawQuery("SELECT ca.placa, ca.modelo, c._id, c.nome FROM clientes c INNER JOIN carros ca ON c._id = ca.id_cliente", null);
}
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) {
}
}
}