Ajuda com sql

8 respostas
fabiodurgante

seguinte quero atualizar fazer update no banco acess no postgree mysql assim funciona masno acess da erro

public void  Update_Valor_Total_Venda(Double valor, Integer id_venda) {
 String sql= " UPDATE venda SET valor_total_venda = '"+valor+"' WHERE id_venda = '"+id_venda+"'";
            
        try {
            Statement stmt = getConexao().createStatement();
                 stmt.executeUpdate(sql);

        } catch (SQLException sQLException) {
            System.out.println("Erro ao setar valor total venda " + sQLException);
        }
      
    }

o erro
8Erro ao setar valor total venda java.sql.SQLException: [Microsoft][Driver ODBC para Microsoft Access] Par?metros insuficientes. Eram esperados 1.

como poderia fazer isso alguem ajuda ai

8 Respostas

B

Qual é o tipo das colunas valor_total_venda e id_venda ?

fabiodurgante

valor_total_venda numerico

id_venda Integer

A

a sintaxe do sql para access é diferente da sintaxe do mysql e postgre, dê uma pesquisada na sintaxe para o sql, que ele tem um sistema de parametrização um pouco diferente. Já tive esse tipo de problema, mas sinceramente não lembro da sintaxe do acces kkk

FacaNaCaveira

Fala ai fabiodurgante,
tenta assim e veja se funciona… tirei as aspas dos valores pois eles são numericos e inteiros e nao Strings

public void Update_Valor_Total_Venda(Double valor, Integer id_venda) {
        String sql = " UPDATE venda SET valor_total_venda = ? WHERE id_venda = ?";

        try {
            Statement stmt = getConexao().prepareStatement(sql);
            //Alterei aqui para o prepareStatement
            stmt.setInt(1, valor);
            stmt.setInt(2, id_venda);
            stmt.executeUpdate();
            stmt.close();//nao esqueça de fechar a tabela e a conexxao
            //close();//e a conexao
        } catch (SQLException sQLException) {
            System.out.println("Erro ao setar valor total venda " + sQLException);
        }
    }

Abração 8)
Max

fabiodurgante

nao da certo nao reconhece o

stmt.setInt(1, valor);      erro no setInt
        stmt.setInt(2, id_venda);     erro no setInt
        stmt.executeUpdate();      erro no execute update

nao reconhece o setint nen o setDouble nen nada

pmlm

Não é Statement mas sim PreparedStatement

A

no exemplo acima, ele não reconhece pois você declarou stmt como Statement e não como PreparedStatement…

no seu exemplo original, dá um system.out.println no valor da variavel sql…copia esse valor e roda direto no access…

ele abrirá uma inputbox pedindo o valor de um parâmetro…

o que o access entende como parâmetro é na verdade um nome de objeto que você possa ter digitado errado…

fabiodurgante

Erro ao setar valor total venda java.sql.SQLException: [Microsoft][Driver ODBC para Microsoft Access] Par?metros insuficientes. Eram esperados 3.

erro denovo

public void Update_Valor_Total_Venda(Double valor, Integer id_venda) {
    String sql = " UPDATE venda SET valor_total_venda = ? WHERE id_venda = ?";

    try {
        PreparedStatement  stmt = getConexao().prepareStatement(sql);
        stmt.setDouble(1, valor);
        stmt.setInt(2, id_venda);
        stmt.executeUpdate();
        stmt.close();//nao esqueça de fechar a tabela e a conexxao
    } catch (SQLException sQLException) {
        System.out.println("Erro ao setar valor total venda " + sQLException);
    }
}
Criado 7 de setembro de 2010
Ultima resposta 8 de set. de 2010
Respostas 8
Participantes 6