Amigos,
Crie duas tabelas, Clientes e Carros. Carros tem relacionamento com Clientes. O código de criação das tabelas é esse:
private static final String DATABASE_TABLE_CLIENTES = "clientes";
private static final String DATABASE_TABLE_CARROS = "carros";
// 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";
// CAMPOS DA TABELA CARROS
public static final String KEY_IDCARRO = "_id";
public static final String KEY_IDCLIENTE = "id_cliente";
public static final String KEY_MODELO = "modelo";
public static final String KEY_PLACA = "placa";
Código abaixo cria a tabela Clientes:
// 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);";
Código abaixo cria a tabela Carros:
// CRIA A TABELA CARROS
private static final String DATABASE_CREATE_CARROS = "create table " + DATABASE_TABLE_CARROS + " ("
+ KEY_IDCARRO + " integer primary key autoincrement, "
+ KEY_MODELO + " text, "
+ KEY_PLACA + ", text, "
+ KEY_IDCLIENTE + " integer);";
Pergunta: O relacionamento entre Clientes e Carros está sendo feito?
Aqui eu método para gravar Cliente e Carro:
// Grava cliente
public long gravarCliente(String nome, String endereco){
ContentValues valores = new ContentValues();
valores.put(KEY_NOME, nome);
valores.put(KEY_ENDERECO, endereco);
return mDb.insert(DATABASE_TABLE_CLIENTES, null, valores);
}
// Grava carro
public long gravarCarroCliente(String modelo, String placa, String idcliente){
ContentValues valores = new ContentValues();
valores.put(KEY_IDCLIENTE, idcliente);
valores.put(KEY_MODELO, modelo);
valores.put(KEY_PLACA, placa);
return mDb.insert(DATABASE_TABLE_CARROS, null, valores);
}
Abaixo método para busca Cliente e Carro:
public Cursor getClientePorNome(String nomeString){
String[] selectionArgs = {nomeString + "%"};
return mDb.rawQuery("SELECT * FROM clientes WHERE nome like ?", selectionArgs);
}
public Cursor getCarroPorPlaca(String placaString){
String[] selectionArgs = {placaString + "%"};
return mDb.rawQuery("SELECT placa, modelo, nome FROM clientes INNER JOIN carros ON clientes._id = carros.id_cliente WHERE placa like ?", selectionArgs);
}
O código abaixo executa as sql:
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(DATABASE_CREATE_CLIENTES);
db.execSQL(DATABASE_CREATE_CARROS);
}
Aqui é o método do botão para gravar:
salvar = (ImageButton) findViewById(R.id.btSalvar);
salvar.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String placaString = Placa.getText().toString();
String modeloString = Modelo.getText().toString();
String idclienteString = IdNome.getText().toString();
mDb.open();
if(Nome.getText().toString().equals("") || Placa.getText().toString().equals("")){
mensagemExibir("Erro ao Salvar","Nome OU Placa em branco, verifique!");
return;
}
mDb.gravarCarroCliente(modeloString, placaString, idclienteString);
mensagemExibir("Salvar","Veículo cadastrado com sucesso!");
mDb.close();
}
});
O que acontece é que quando gravo o carro e depois vou consultar, nada retorna. Onde estou errando? Não sei mais o que fazer…