Erro com parametro, banco de dados

8 respostas
R

Não estou conseguindo localizar o que tem de errado nesse trecho de codigo, estou a tarde toda analizando ele e naum consigo encontrar nada.

try{
      Connection conn = Conexao.getConexao();
      Statement stmt = conn.createStatement();

      System.out.println("1");
      stmt.executeUpdate("INSERT INTO Calculo(Codigo, Piloto, Circuito, Teste, Calculo) VALUES ("+codigoCalculo+", '"+jtPilotoP.getText()+"', '"+ jtCircuitoP.getText() +"', "+ testeCalculo +", "+ calculo +")");
      System.out.println("2");
      stmt.close();
      
}catch(Exception e){
      System.out.println("Erro: " +e.getMessage());
}

Se alguem conseguir enchergar algo, digam o que estou fazendo de errado, fica dando esse erro:

Erro: [Microsoft][Driver ODBC para Microsoft Access] Parâmetros insuficientes. Eram esperados 1.

Vlw

8 Respostas

diego2005

Cara, use PreparedStatement no lugar de Statement:

try{   
     Connection conn = Conexao.getConexao();   
     PreparedStatement stmt = conn.createStatement("INSERT INTO Calculo(Codigo, Piloto, Circuito, Teste, Calculo) VALUES (?, ?, ?, ?, ?)");

     stmt.setInt(1, codigoCalculo);
     stmt.setString(2, jtPilotoP.getText());
     stmt.setString(3, jtCircuitoP.getText());
     stmt.setString(4, testeCalculo);
     stmt.setString(5, calculo);

     stmt.executeUpdate();

     stmt.close();
} catch(Exception e){   
     System.out.println("Erro: " +e.getMessage())
}

T+

R

Cara, ta dando esse erro agora:

Eu uso aquele trecho de codigo em varias partes do programa para inserir dados em outras tabelas, e somente nesse ta dando problema, no resto todos estão sendo inseridos e deletados corretamente.

Se tiver outra dica, agradeço.

Vlw

diego2005

Amigo, desculpa a confusão. Não é:

PreparedStatement stmt = conn.createStatement("INSERT INTO Calculo(Codigo, Piloto, Circuito, Teste, Calculo) VALUES (?, ?, ?, ?, ?)");

e sim:

PreparedStatement stmt = conn.prepareStatement("INSERT INTO Calculo(Codigo, Piloto, Circuito, Teste, Calculo) VALUES (?, ?, ?, ?, ?)");

Sábado a noite, a cabeça já não tá funcionando muito bem, hehehehehe…

T+

R

Diego, fiz do jeito que vc me passou e deu um outro erro, que na verdade é o verdadeiro erro, estou enviando uma variavel que era pra ser numerica mas esta indo com caracter, na verdade essa variavel é um doble so que ela esta sendo dividida por zero ai ela fica com o valor "NaN", estou tentando armazenar em um Arraylist os meus dados e depois tirar a media deles como o contador naum esta sendo incrementado ele fica sendo zero e divide meu valor por zero, acho que estou usando o arraylist errado, pq ele retorna null quando chega nele o codigo esta assim:

try{
    Connection conn = Conexao.getConexao();
    Statement stmt = conn.createStatement();
    ResultSet rs = stmt.executeQuery("Select * from TesteDesacelerado where Piloto = '" + jtPilotoP.getText() + "' and Circuito = '" + jtCircuitoP.getText() + "' and CodCalculo = '"+ (String.valueOf(testeCalculo) + data) + "'"); 

    while(rs.next()){
        velInicial = rs.getDouble("VelInicial");
        velFinal = rs.getDouble("VelFinal");
        tempo = ((velInicial + velFinal) / 2) / 0.10;

        ft = Double.parseDouble(jtMassaPilotoParam.getText()) + Double.parseDouble(jtMassaVeiculoParam.getText()) * ((velFinal - velInicial) / tempo);

        //System.out.println(velInicial+"  "+velFinal+"  "+tempo+"  "+ft+"  "+contador+"  "+contVel);

        if(ft < 0)
            ft = ft * (-1);
        System.out.println(1);
        contador++;
        mediaDesacelerando[contador] = ft;
        System.out.println(2);
        mediaVelocidade[contVel] = velInicial;
        contVel++;
        System.out.println(3);
        mediaVelocidade[contVel] = velFinal;
        contVel++;
        System.out.println(4);
        System.out.println(contador+"  "+contVel);
    }

    stmt.close();
    //rs.close();
    conn.close();        
}catch (Exception e){
    System.out.println("Erro: " + e.getMessage());
}

Ele nem chega no System.out.println(2); ja da erro de Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException, vc sabe que erro é esse?

Vlw.

Vlw.

diego2005

Acho que não entendi. Qual código não dá dando certo?? Esse aqui:

try{     
     Connection conn = Conexao.getConexao();     
     PreparedStatement stmt = conn.prepareStatement("INSERT INTO Calculo(Codigo, Piloto, Circuito, Teste, Calculo) VALUES (?, ?, ?, ?, ?)");   
  
     stmt.setInt(1, codigoCalculo);   
     stmt.setString(2, jtPilotoP.getText());   
     stmt.setString(3, jtCircuitoP.getText());   
     stmt.setString(4, testeCalculo);   
     stmt.setString(5, calculo);   
  
     stmt.executeUpdate();   
  
     stmt.close();   
} catch(Exception e){     
     System.out.println("Erro: " +e.getMessage())   
}

Se for esse, qual o erro??

T+

R

Esse ja esta certo, o problema mesmo era nesse codigo, pq ele estava dividindo por zero ai seguia o programa e dava erro na hora de inserir os dados no banco.

try{

Connection conn = Conexao.getConexao();

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery(Select * from TesteDesacelerado where Piloto = '” + jtPilotoP.getText() + “’ and Circuito = '” + jtCircuitoP.getText() + “’ and CodCalculo = '”+ (String.valueOf(testeCalculo) + data) + “’”);
while(rs.next()){   
    velInicial = rs.getDouble("VelInicial");   
    velFinal = rs.getDouble("VelFinal");   
    tempo = ((velInicial + velFinal) / 2) / 0.10;   

    ft = Double.parseDouble(jtMassaPilotoParam.getText()) + Double.parseDouble(jtMassaVeiculoParam.getText()) * ((velFinal - velInicial) / tempo);   

    //System.out.println(velInicial+"  "+velFinal+"  "+tempo+"  "+ft+"  "+contador+"  "+contVel);   

    if(ft < 0)   
        ft = ft * (-1);   
    System.out.println(1);   
    contador++;   
    mediaDesacelerando[contador] = ft;   
    System.out.println(2);   
    mediaVelocidade[contVel] = velInicial;   
    contVel++;   
    System.out.println(3);   
    mediaVelocidade[contVel] = velFinal;   
    contVel++;   
    System.out.println(4);   
    System.out.println(contador+"  "+contVel);   
}   

stmt.close();   
//rs.close();   
conn.close();
}catch (Exception e){

System.out.println("Erro: " + e.getMessage());

}

Vlw

diego2005

Mas e agora, está certo???

R

Aquele erro foi solucionado.

Vlw.

Criado 27 de outubro de 2007
Ultima resposta 28 de out. de 2007
Respostas 8
Participantes 2