[Android] Erro ao inserir no banco

7 respostas
D
public void gravarRegistro(){
    	try{
    		String sql = "INSERT INTO teste (nome, idade, altura, peso, sexo) values('" 
    			+etNome.getText().toString()+"','"
    			+etIdade.getText().toString()+"','"
    			+etAltura.getText().toString()+"','"
    			+etPeso.getText().toString()+"','"
    			+etSexo.getText().toString()+"')";
    				
    		bancoDados.execSQL(sql);
    		
    	}
    	catch (Exception erro){
    		mensagemExibir("PORRRAAAAAA", "Erro ao gravar dados!");
    	}
    }

quando executo cai na mensagem de erro aguem pode me ajudar?

7 Respostas

Andre_Rosa

Diga-nos a mensagem de erro.

D

cabei de descobrir uma coisa… eu tirei os parametros passado e puis tudo valores manuais… e gravou… o q sera q esta errado na minha sintaxe?

dj11

qual Exception o console exibe? :evil:

D

achei o problema mas nao sei como corrigir

String sql = "INSERT INTO teste2 (nome, idade, altura, peso, sexo) values ('" 
    			+etNome.getText().toString()+"','"
    			+etIdade.getText().toString()+"','"
    			+etAltura.getText().toString()+"','"
    			+etPeso.getText().toString()+"','"
    			+etSexo.getText().toString()+"')";
    				
    		bancoDados.execSQL(sql);
    		mensagemExibir("Aviso banco", "Dados gravados com sucesso!");

meu codigo de inserçao é este,
na minha tela tem campos "editText com o tipo do input TEXT" e "editText com o tipo do input DECIMAL"
se eu anular o tipo decimal grava certim.. mas quando ativo o DECIMAL.. da erro ... como posso corrigir?

os campos decimal é o etAltura, etPeso, etIdade
acho q deve ter alguma forma de converte

Marky.Vasconcelos

Nesse forum, coloque a tag [ANDROID] no titulo quando for perguntar algo relacionado.

E também evite titulos com “me ajudem”.

Dessa vez eu editei para voce.

EdyStauch

Não sei se é este seu problema, mas verifique aí:

Possivelmente o seu DECIMAL.toString retorna alguma string com vírgula e a string SQL final tem mais “valores” do que colunas, causando o erro.

Exemplo:

nome = “joão”;
decimal = 1.2;

INSERT INTO TABELA(campo1, campo2)
values (nome.toString, decimal.toString);

Possivelmente sua string SQL final fique assim:

INSERT INTO TABELA(campo1, campo2)
values (joao, 1,2);

A linha “values” possue 3 valores, gerando o erro (pois só existem 2 colunas).

No seu caso talvez usar um replace no decimal.toString resolva.
Obs: Talvez exista uma solução mais elegante. :lol:

pedrohms

Aconselho você a ultilizar o SQLiteDatabase.insert que e menos sujeito a erros.

Criado 25 de agosto de 2011
Ultima resposta 2 de set. de 2011
Respostas 7
Participantes 6