Problemas de iniciante com SQL  XML
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Autor Mensagem
AndreMendes
JavaChild
[Avatar]

Membro desde: 23/09/2009 02:37:07
Mensagens: 143
Offline

Quando vou checar o banco, os registros estão vazios ...
Lembrando que, eu sempre uso o UPDATE e nunca o INSERT INTO ...
Todos os metodos fazem updates ...


public void inserirMovimentoCaixa(String empresa, MovimentoDoCaixa movimentoDoCaixa) throws SQLException, ClassNotFoundException{

String alterar = "UPDATE "+empresa+ " SET DATADEHOJE='"+movimentoDoCaixa.getDataDeHoje()+"'," +
" NUMERODODOCUMENTO='"+movimentoDoCaixa.getNumeroDoDocumento()+"'," +
" CAIXARESPONSAVEL='"+movimentoDoCaixa.getCaixaResponsavel()+"'";
conectar();
stm.execute(alterar);
desconectar();
}

André Mendes Duarte
Bacharelando em Ciência da Computação na Universidade Do Estado de Santa Catarina
renamed
GUJ Ranger

Membro desde: 21/09/2009 08:47:57
Mensagens: 889
Localização: Rio de Janeiro
Offline

AndreMendes wrote:Quando vou checar o banco, os registros estão vazios ...
Lembrando que, eu sempre uso o UPDATE e nunca o INSERT INTO ...
Todos os metodos fazem updates ...


public void inserirMovimentoCaixa(String empresa, MovimentoDoCaixa movimentoDoCaixa) throws SQLException, ClassNotFoundException{

String alterar = "UPDATE "+empresa+ " SET DATADEHOJE='"+movimentoDoCaixa.getDataDeHoje()+"'," +
" NUMERODODOCUMENTO='"+movimentoDoCaixa.getNumeroDoDocumento()+"'," +
" CAIXARESPONSAVEL='"+movimentoDoCaixa.getCaixaResponsavel()+"'";
conectar();
stm.execute(alterar);
desconectar();
}


Você meio que sabe seu erro, não é verdade?
Se você está inserido um novo registro, você tem que fazer insert into.
Existe algum motivo para que você só use update?

flw!
===========================

CV: http://lattes.cnpq.br/7235056457600426
[MSN]
AndreMendes
JavaChild
[Avatar]

Membro desde: 23/09/2009 02:37:07
Mensagens: 143
Offline

Bom, os dados estão vindo de um formulário HTML, estou trabalhando com JSP.
A minha intenção ao usar o update é deixar livre a ordem de inserção...
Mas repensando minha ideia, vi que não tem como, pois tenho que inserir primeiro o registro chave e depois os demais.

TOPICO RESOLVIDO

André Mendes Duarte
Bacharelando em Ciência da Computação na Universidade Do Estado de Santa Catarina
rodrigo.bossini
GUJ Master
[Avatar]

Membro desde: 01/07/2008 20:59:17
Mensagens: 1055
Offline

Pelo visto você não entendeu nada de SQL ainda. Talvez seja interessante pegar uma apostila somente de sql, e realizar alguns testes em algum SGBD, como o mySQL, só pra ver como tudo funciona. Misturar SQL com java pode ser complicado se você não tem um conhecimento básico de ambos.

http://www.rodrigobossini.com.br/

Meu Twitter:@rodrigobossini
Se uma pessoa fala português há 30 anos e ainda não aprendeu, por que é que vou acreditar que ela está programando em alguma linguagem de programação há apenas 10 anos e sabe o que está fazendo?
AndreMendes
JavaChild
[Avatar]

Membro desde: 23/09/2009 02:37:07
Mensagens: 143
Offline

Sim, sim, sou iniciante ainda ...

O primeiro problema eu resolvi ...
O problema agora, é que meu update nao funciona ...
Nenhuma exceção é disparada, mas quando vou checar o banco, os registros não se alteraram! Ai vai o codigo do update.

This message was edited 1 time. Last update was at 23/06/2010 22:53:37


André Mendes Duarte
Bacharelando em Ciência da Computação na Universidade Do Estado de Santa Catarina
AndreMendes
JavaChild
[Avatar]

Membro desde: 23/09/2009 02:37:07
Mensagens: 143
Offline

Problema resolvido.
Muito grato pela ajuda.

André Mendes Duarte
Bacharelando em Ciência da Computação na Universidade Do Estado de Santa Catarina
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline

Use um preparedstatement. Do jeito que seu código está, fica muito sujeito a erros e ataques.
Sem falar que essas concatenações deixam tudo horrível de ler.

Sem falar que no PreparedStatement vc não precisa se preocupar com o formato de data do banco, ou com colocar aspas simples para os campos de texto (aliás, pior do que isso, em remover as aspas simples das Strings de textos do seu usuário).

This message was edited 2 times. Last update was at 01/07/2010 12:24:21


@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
AndreMendes
JavaChild
[Avatar]

Membro desde: 23/09/2009 02:37:07
Mensagens: 143
Offline

Voce pode me passar algum lugar em que eu possa ler sobre o preparedStatement?

André Mendes Duarte
Bacharelando em Ciência da Computação na Universidade Do Estado de Santa Catarina
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline

Na verdade muda muito pouca coisa. Veja:

Modo que vc faz:


Modo preferível:


Note que a ? do nome não precisa estar entre aspas simples. Como o preparedStatement sabe que o campo é um String, já que vc usou o setString, ele mesmo se encarrega de comunicar isso ao banco. Aí, se seu usuário tiver um nome como: "Ultred's". não vai dar pau no seu SQL.

Isso também impede que um atacante tente cadastrar um nome como:


Que transformaria a String em:


Note que dois comandos SQLs aí no meio são válidos. E causariam uma catástrofe no banco de dados. É o tal do SQL Injection.
Com o preparedStatement, esse problema não ocorreria e vc efetivamente teria um aluno chamado "'); DELETE * FROM Aluno; COMMIT;".

@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
Jhonny Oliveira
JavaChild
[Avatar]

Membro desde: 25/10/2009 15:14:47
Mensagens: 115
Localização: Guarulhos - SP
Offline

Leia também sobre hibernate, seu código fica mais elegante, mais correto e compatível com os bancos de dados mais utilizados.
A apostila do FJ-21 da Caelum tem um tópico sobre Hibernate, já uma lida lá.
Boa sorte.

Jhonny Oliveira


"E Deus disse a Noé: - Faça backup que Eu vou formatar!".


8º Semestre de Sistemas de Informação - Faculdade Eniac
jhonny.informatica@gmail.com



[Email]
 
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Ir para:   
Powered by JForum 2.1.8 © JForum Team