Data em JDBC

3 respostas
P

Ae pessoal tenho o seguinte código:

import java.io.File;
import java.io.*;
import java.util.*;
import java.lang.*;
import java.sql.*;
import jxl.*;
import jxl.read.biff.*;
import java.text.*;

public class excel {
    private String url;
    private Connection connection;
    //Vector dados = new Vector();
    /** Creates a new instance of excel */
    public excel() {
        try {
            url = "jdbc:odbc:Paschoetoserieshistoricas";
            
            Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );
            connection = DriverManager.getConnection( url );
            
        } catch ( ClassNotFoundException cnfex ) {
// porcessa ClassNotFoundExceptions aqui
            cnfex.printStackTrace();
        } catch ( SQLException sqlex ) {
// processa SQLExceptions aqui
            sqlex.printStackTrace();
        } catch ( Exception ex ) {
// processa exeptions remanescentes aqui
            ex.printStackTrace();
            
        }
    }
    public void AbrePlanilha(){
        try{
            Workbook workbook = Workbook.getWorkbook(new File("JavaExcel.xls"));
            Sheet sheet = workbook.getSheet(0);
            
            SimpleDateFormat formatador = new SimpleDateFormat("dd/MM/yyyy");
            double numberc2 = 0;
            java.util.Date dateb2 = new java.util.Date();
            
            
            Cell b2 = sheet.getCell(0,0);
            Cell c2 = sheet.getCell(1,0);
            
            if (c2.getType() == CellType.NUMBER) {
                //NumberCell nc = (NumberCell) b2;
                numberc2 = Double.parseDouble(c2.getContents());
            }
            if (b2.getType() == CellType.DATE) {
                try {
               // DateCell dc = (DateCell) c2;
                 dateb2 =  formatador.parse(b2.getContents().intern());
                } catch (ParseException ex) {
                    ex.printStackTrace();
                }
            }
            
            
            
            
            PreparedStatement pstmt0 = connection.prepareStatement("SELECT ID FROM TbSeries WHERE Nome = ?");
            pstmt0.setObject(1, "BRL");
            ResultSet rs0 = pstmt0.executeQuery();
            boolean ret = rs0.next();
            int IDSerie = rs0.getInt("ID");
            
            PreparedStatement pstmt = connection.prepareStatement("UPDATE TbValorSerie SET Data = ?, Valor = ? WHERE IDSerie = ? ");
            
            
            pstmt.setDate(1, new java.sql.Date (dateb2.getTime()));
            pstmt.setDouble(2, numberc2);
            pstmt.setInt(3, IDSerie);
            
            
            ResultSet rs = pstmt.executeQuery();
            
            workbook.close();
            pstmt.close();
            
        } catch (IOException e){
            e.printStackTrace();
        } catch (BiffException be){
            be.printStackTrace();
        } catch (SQLException ex){
            ex.printStackTrace();
        }
        
    }
    
    public static void main(String[] args){
        excel ex = new excel();
        ex.AbrePlanilha();
    }
}

no entanto ocorre um erro do tipo:Datetime field overflow(null)…segui os padrões que vinha usando, alguém pode me ajudar por favor?

3 Respostas

shison

O erro acontece em que parte? Bota o Stacktrace aí.
Você está tentando salvar o valor ou carregar? Use o debug e verifique que valor você está tentando salvar.

P

jah verifiquei, o valor esta meio estranho mesmo eh do tipo data mas no seguinte formato :Wed Jan05 00:00:00 PST 0007, ele fica assim mesmo eu usando formatdor.
StackTrace:

Non-existing path C:\Program Files\Java\j2sdk1.4.2_13\jre\lib\i18n.jar provided.

Non-existing path C:\Program Files\Java\j2sdk1.4.2_13\jre\classes provided.

java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver]Datetime field overflow (null)

at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6958)

at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115)

at sun.jdbc.odbc.JdbcOdbc.SQLExecute(JdbcOdbc.java:3150)

at sun.jdbc.odbc.JdbcOdbcPreparedStatement.execute(JdbcOdbcPreparedStatement.java:214)

at sun.jdbc.odbc.JdbcOdbcPreparedStatement.executeQuery(JdbcOdbcPreparedStatement.java:89)
shison

Acho que realmente você tem de trabalhar esta data, pois nem o Ano ela tem. Ou seria aquele “0007” ali?
Verifica essa data aí antes de aplicar a formatação, veja se na sua planilha a coisa testá certa.

E os dois erros acima de falta de arquivo e diretório? Está faltando um JAR, isto pode te atrapalhar tb.

Criado 30 de janeiro de 2007
Ultima resposta 30 de jan. de 2007
Respostas 3
Participantes 2