Estou com um problema. Tenho essa string para criar duas tabelas na minha classe DbAdapter, ok? Ao tentar gravar, informou que gravou com sucesso mas no logCat deu o seguinte erro:
08-21 13:28:24.106: E/Database(280): android.database.sqlite.SQLiteException: no such table: carros: , while compiling: INSERT INTO carros(placa, modelo, id_cliente) VALUES(?, ?, ?);
privatestaticfinalStringDATABASE_TABLE_CLIENTES="clientes";privatestaticfinalStringDATABASE_TABLE_CARROS="carros";// CAMPOS DA TABELA CLIENTES publicstaticfinalStringKEY_IDCLI="_id";publicstaticfinalStringKEY_NOME="nome";publicstaticfinalStringKEY_ENDERECO="endereco";// CAMPOS DA TABELA CARROS publicstaticfinalStringKEY_IDCARRO="_id";publicstaticfinalStringKEY_IDCLIENTE="id_cliente";publicstaticfinalStringKEY_MODELO="modelo";publicstaticfinalStringKEY_PLACA="placa";privatestaticfinalStringDATABASE_CREATE="create table "+DATABASE_TABLE_CLIENTES+" ("+KEY_IDCLI+" integer primary key autoincrement, "+KEY_NOME+" text, "+KEY_ENDERECO+" text); create table "+DATABASE_TABLE_CARROS+" ("+KEY_IDCARRO+" integer primary key autoincrement, "+KEY_IDCLIENTE+", integer"+KEY_MODELO+" text, "+KEY_PLACA+"text) , FOREIGN KEY ( id_cliente) REFERENCES clientes (_id) ON DELETE RESTRICT ON UPDATE CASCADE);";// Grava carropubliclonggravarCarroCliente(Stringidcliente,Stringmodelo,Stringplaca){ContentValuesvalores=newContentValues();valores.put(KEY_IDCLIENTE,idcliente);valores.put(KEY_MODELO,modelo);valores.put(KEY_PLACA,placa);returnmDb.insert(DATABASE_TABLE_CARROS,null,valores);}
Se você for checar a string SQL, vai ver que tem algo como “, integermodelo” (olhe o espaço e vírgula no lugar errado).
Conselho: antes de fazer essa concatenação monstro, crie uma string SQL em um editor de texto qualquer, teste-a, e depois veja se você pode montá-la no seu programa e dar o mesmo resultado. Problemas com espaços e vírgulas são muito comuns quando se faz esse tipo de concatenação.
08-21 13:28:24.106: E/Database(280): android.database.sqlite.SQLiteException: no such table: carros: , while compiling: INSERT INTO carros(placa, modelo, id_cliente) VALUES(?, ?, ?);
E
entanglement
Pegue essa definição da sua string, e crie um programinha bem bobo (em Java SE mesmo, não precisa ser em Android) que imprima essa string. Confira para ver se está certa.
Eu já vi que tem um probleminha, mas é melhor para você entender como é que se consertam as coisas, e de qualquer jeito não sei se tem mais algum problema.
Veja qual é a saída desse programa. Só de olhar você vai ver que tem coisa errada. Se não conseguir enxergar isso, pegue algum programa que crie tabelas SQLite no Windows mesmo, para ver se a sintaxe está correta.