Problemas de iniciante com SQL

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 …

[quote=AndreMendes]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 …

[quote]
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();
}

[/quote][/quote]

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?

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

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.

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.

public void inserirMovimentoCaixa(String empresa, Pagamentos pagamentos) throws SQLException, ClassNotFoundException{


        Data data = new Data();
        String alterar = "UPDATE "+empresa+ " SET   COMPRASAVISTA='"+pagamentos.getComprasAVista()+"'," +
                                            "       PAGAMENTOSDEFORNECEDORES='"+pagamentos.getPagamentosDeFornecedores()+"'," +
                                            "       PROLABORE='"+pagamentos.getProLabore()+"'," +
                                            "       COMISSOESSALARIOSEORDENADOS='"+pagamentos.getComissoesSalariosOrdenados()+"'," +
                                            "       COMBUSTIVEISELUBRIFICANTES='"+pagamentos.getCombustíveisLubrificantes()+"'," +
                                            "       ENCARGOSSOCIAIS='"+pagamentos.getEncargosSociais()+"'," +
                                            "       TRIBUTOSFEDERAIS='"+pagamentos.getTributosFederais()+"'," +
                                            "       TRIBUTOSESTADUAIS='"+pagamentos.getTributosEstaduais()+"'," +
                                            "       TRIBUTOSMUNICIPAIS='"+pagamentos.getTributosMunicipais()+"'," +
                                            "       AGUALUZETELEFONE='"+pagamentos.getAguaLuzTelefone()+"'," +
                                            "       ALUGUEIS='"+pagamentos.getAlugueis()+"'," +
                                            "       SERVICOSPROFISSIONAIS='"+pagamentos.getServicosProfissionais()+"'," +
                                            "       SEGUROS='"+pagamentos.getSeguros()+"'," +
                                            "       FRETESCARRETOS='"+pagamentos.getFretesCarretos()+"'," +
                                            "       OUTRASDESPESAS='"+pagamentos.getOutrasDespesas()+"'," +
                                            "       COMPRASDEIMOBILIZADO='"+pagamentos.getComprasDeImbolizado()+"'," +
                                            "       DEPOSITOSBANCARIOS='"+pagamentos.getDepositosBancarios()+"'," +
                                            "       PAGAMENTOSDEEMPRESTIMO='"+pagamentos.getPagamentosDeEmprestimo()+"'" +
                                            "       WHERE DATADEHOJE='"+data.dataFormatada()+"'";
        conectar();
        stm.execute(alterar);
        desconectar();
    }

Problema resolvido.
Muito grato pela ajuda.

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).

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

Na verdade muda muito pouca coisa. Veja:

Modo que vc faz:

String sql = "UPDATE tblAlunos SET nome = '" + aluno.getNome() + "', idade=" + aluno.getIdade() + " WHERE idAluno = " + aluno.getId(); Statement stmt = conn.createStatement(); stmt.executeUpdate(sql);

Modo preferível:

String sql = "UPDATE tblAlunos SET nome=?, idade=? WHERE idAluno = ?" Statement stmt = conn.prepareStatement(sql); stmt.setString(1, aluno.getNome()); stmt.setInt(2, aluno.getIdade()); stmt.setInt(3, aluno.getId()); stmt.executeUpdate();

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;”. :slight_smile:

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.