Erro com inserão em BD

2 respostas
R

Ola,

Estou tendo problemas para inserir dados em uma tabela, o objetivo dessa tabela é guardar os tempos das parciais de pilotos.

Tenho uma classe cronometro que conta o tempo e atualiza o campo na tela, quando o usuário clica em capturar, é para ser guardado as infomações na tabela cronometro. So que as vezes da esse erro:

Erro: [Microsoft][Driver ODBC para Microsoft Access] O campo 'Cronometro.Tempo' não pode ser uma seqüência de caracteres de comprimento nulo.
. Pq isso esta ocorrendo, e pq as vezes ele funciona, guardando corretamente os dados na tabela?

Coloquei um System.out.println para ver o que estava vindo no momento da captura, as vezes vem nulo outras vezes vem em branco ou com o valor correto. Alguem sabe uma solução para esse problema?

Não sei se ajuda mas segue o codigo que uso para guardar os dados na tabela:
try{
    Connection conn = Conexao.getConexao();
    Statement stmt = conn.createStatement();

    System.out.println(jtCronometro1TP.getText());
    stmt.executeUpdate("INSERT INTO Cronometro(Piloto, Circuito, Volta, Parcial, Tempo, Data) VALUES ('"+jlPiloto1TP.getText()+"', '"+jtCircuitoTP.getText()+"', "+jtVolta1TP.getText()+", "+jtParciais1TP.getText()+", '"+jtCronometro1TP.getText()+"', '"+data+"')");
    stmt.close();
    conn.close();

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

Desde ja agradeço.
Vlw.

2 Respostas

Avante

Olá,

Como é a sua classe Cronometro? É uma Thread?

Abraços.

R

Sim, estou usando thread para executa-las, segue o codigo:

package truck;

import java.util.Calendar;

public class Cronometro implements Runnable{
    //variaveis
    
    /** Creates a new instance of cronometro */
    public Cronometro(){
        comece = true;
    }

    public void run() {
        
        setComece(true);
        
        inicio = System.currentTimeMillis();
        centesimos = "00";
        segundos = "00";
        minutos = "00";
        cent = 0;
        seg = 0;
        min = 0;
        
        while(comece){ //se comece for true faça
            
            //conteudo
            
            //concatena
            tempo = minutos + ":" + segundos + ":" + centesimos;
            //return tempo;
            
            pri.atualizaCronometro(tempo);
        }
        //return tempo;
    }
    public void stop(){
        comece = false;
    }
    
    //Aki seto a classe principal
    public void setFrame(principal pri){
        this.pri = pri;
    }
    
    public synchronized boolean isComece(){
        return comece;
    }
    
    public synchronized void setComece( boolean comece ){
        this.comece = comece;
    }
}

Como a estancio na minha classe principal:

private Cronometro cr = new Cronometro();

        if(jbCronometro.getText() == "Iniciar"){
            jbCronometro.setText("Parar");
            cr.setFrame(this); 
            new Thread(cr).start();
        }
        else{   
            cr.stop(); 
            jbCronometro.setText("Iniciar");
        }

Vlw.

Criado 3 de novembro de 2007
Ultima resposta 3 de nov. de 2007
Respostas 2
Participantes 2