[Resolvido] Alterando dados de uma tabela no mysql utilizando java

2 respostas
Midori

O meu código não apresenta nenhum erro, mas quando eu executo, diz que, sim, há um erro na sintaxe no código e eu não consigo resolver.

Eu tenho um código que insere, altera, consulta e deleta. Todos funcionam, exceto o de alterar. A parte do código que é responsável pela alteração é essa:

Statement st = bdmarket.con.createStatement(); st.executeUpdate("UPDATE hardware set codigo="+codigo+", nome="+nome+", quantidade="+quantidade+", descricao="+descricao+", quantidadeEstoque="+quantidadeEstoque+" where codigo="+codigo+", nome="+nome+", quantidade="+quantidade+", descricao="+descricao+", quantidadeEstoque="+quantidadeEstoque+"");

As strings e ints tem o mesmo nome dos campos na tabela, fiz assim pra facilitar.

Enfim, podem me ajudar?! Agradeço desde já.

2 Respostas

pmlm

Antes de ir ao teu erro, esse update nunca vai atualizar nada, já que as tuas condições do where são iguais aos sets que estás a fazer. Não conheço o teu modelo de dados mas provavelmente no where só queres o codigo.

Agora em relação ao teu erro, tudo o que forem campos string devem ter plicas ( ’ ) a delimitar os teus valores (assumi que apenas nome e descrição eram strings):

t.executeUpdate("UPDATE hardware set codigo="+codigo+", nome='"+nome+"', quantidade="+quantidade+", descricao='"+descricao+"', quantidadeEstoque="+quantidadeEstoque+" where codigo="+codigo);

Como podes verificar isso torna-se banstante confuso, além de perigoso para o sistema, sujeito a SQL injection.

O que tu realmente precisas é de usar PreparedStatement e simplificar a tua vida:

pstmt = bdmarket.con.prepareStatement("UPDATE hardware set codigo=?, nome=?, quantidade=?,  descricao=?, quantidadeEstoque=? where codigo=?");
pstmt.setInt(1, codigo);
pstmt.setString(2, nome);
...
Midori

Tem rezão! Eu deveria ter posto apenas o where codigo e já resolveria o problema. Não sei porque compliquei tanto.
Enfim, muito obrigada.

Criado 26 de abril de 2015
Ultima resposta 26 de abr. de 2015
Respostas 2
Participantes 2