Meus amigos, to perdido nesse código. Criei as tabelas mas quando vou gravar o cliente, dá um erro:
08-21 21:19:08.616: E/Database(146: Failure 1 (near “,”: syntax error) on 0x263a80 when preparing ‘create table carros (_id integer primary key autoincrement, id_cliente integer, modelo text, placa text), FOREIGN KEY (id_cliente) REFERENCES clientes (_id) ON DELETE RESTRICT ON UPDATE CASCADE);’.
O que pode ser? Não sei mais o que fazer.
private static final String DATABASE_NAME = "testeoficina";
private static final int DATABASE_VERSION = 1;
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";
// 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);";
// CRIA A TABELA CARROS
private static final String DATABASE_CREATE_CARROS = "create table " + DATABASE_TABLE_CARROS + " ("
+ KEY_IDCARRO + " integer primary key autoincrement, "
+ KEY_IDCLIENTE + " integer, "
+ KEY_MODELO + " text, "
+ KEY_PLACA + " text), FOREIGN KEY ( " + KEY_IDCLIENTE
+ " ) REFERENCES " + DATABASE_TABLE_CLIENTES + " (" + KEY_IDCLI
+ " ) ON DELETE RESTRICT ON UPDATE CASCADE);";
// 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);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(DATABASE_CREATE_CLIENTES);
db.execSQL(DATABASE_CREATE_CARROS);
}
Método do botão salvar Cliente:
// Código do botão Salvar da Tela de Cadastro de Clientes
salvar = (ImageButton) findViewById(R.id.btSalvar);
salvar.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String nomeString = Nome.getText().toString();
String enderecoString = Endereco.getText().toString();
mDb.open();
if(Nome.getText().toString().equals("") || Endereco.getText().toString().equals("")){
mensagemExibir("Erro ao Salvar","Dados em branco, verifique!");
return;
}
mDb.gravarCliente(nomeString, enderecoString);
mensagemExibir("Salvar","Cliente cadastrado com sucesso!");
mDb.close();
}
});