Jdbc

Tenho o seguinte código:

import java.awt.;
import java.awt.event.
;
import java.sql.;
import java.sql.Date;
import javax.swing.
;
import java.util.;
import java.text.
;

public class HistoricoDeSerie extends Layout implements ActionListener {
private ScrollingPanel fields;
private JTextArea output;
private Connection connection;

/** Creates a new instance of HistoricoDeSerie */
public HistoricoDeSerie(Connection c, ScrollingPanel f, JTextArea o) {
    connection = c;
    fields = f;
    output = o;        
}
    public void actionPerformed( ActionEvent e ) {
    try{
        PreparedStatement pstmt = connection.prepareStatement("SELECT Data, Valor FROM TbValorSerie, TbSeries WHERE TbValorSerie.IDSerie = TbSeries.ID AND Data >= #?# AND Data <= #?# AND Nome = ? ORDER BY Data");
        
        if (!fields.NomeSerie.getText().equals("") && !fields.DataIni.getText().equals("") && !fields.DataFim.getText().equals("")){
            
            SimpleDateFormat formatador = new SimpleDateFormat("dd/MM/yyyy"); 
            java.util.Date dataIn = null;
            java.util.Date dataFim = null;
            
            try{
                dataIn = formatador.parse(fields.DataIni.getText());
                dataFim = formatador.parse(fields.DataFim.getText());
            }
            catch(ParseException evt){
              evt.printStackTrace();  
            }
            pstmt.setObject(1, dataIn);
            pstmt.setObject(2, dataFim);
            pstmt.setObject(3, fields.NomeSerie.getText());
            
           ResultSet result = pstmt.executeQuery();
           displayResultSet( result, "Histórico da série" );
           
        } else{
            output.append( "\nEntre com o nome da Serie e com as datas Inicial e Final\n" );
            pstmt.close();
        }
    } catch ( SQLException sqlex ) {
        sqlex.printStackTrace();
        output.append( sqlex.toString() );
    }
    
    
    
}

}

Ele gera uma sqlexception:
java.sql.SQLException: SQL Exception : Unknown SQL Type for PreparedStatement.setObject (SQL Type=1111)

alguém pode me ajudar?

code
coloca seu código aki… :slight_smile:
/code

Ta ai cara, ele da o erro no setObject, pelo menos eu acho que eh isso.

import java.awt.;
import java.awt.event.
;
import java.sql.;
import java.sql.Date;
import javax.swing.
;
import java.util.;
import java.text.
;

public class HistoricoDeSerie extends Layout implements ActionListener {
private ScrollingPanel fields;
private JTextArea output;
private Connection connection;

/** Creates a new instance of HistoricoDeSerie */
public HistoricoDeSerie(Connection c, ScrollingPanel f, JTextArea o) {
    connection = c;
    fields = f;
    output = o;        
}
    public void actionPerformed( ActionEvent e ) {
    try{
        PreparedStatement pstmt = connection.prepareStatement("SELECT Data, Valor FROM TbValorSerie, TbSeries WHERE TbValorSerie.IDSerie = TbSeries.ID AND Data >= #?# AND Data <= #?# AND Nome = ? ORDER BY Data");
        
        if (!fields.NomeSerie.getText().equals("") && !fields.DataIni.getText().equals("") && !fields.DataFim.getText().equals("")){
            
            SimpleDateFormat formatador = new SimpleDateFormat("dd/MM/yyyy"); 
            java.util.Date dataIn = null;
            java.util.Date dataFim = null;
            
            try{
                dataIn = formatador.parse(fields.DataIni.getText());
                dataFim = formatador.parse(fields.DataFim.getText());
            }
            catch(ParseException evt){
              evt.printStackTrace();  
            }
            pstmt.setObject(1, dataIn);
            pstmt.setObject(2, dataFim);
            pstmt.setObject(3, fields.NomeSerie.getText());
            
           ResultSet result = pstmt.executeQuery();
           displayResultSet( result, "Histórico da série" );
           
        } else{
            output.append( "\nEntre com o nome da Serie e com as datas Inicial e Final\n" );
            pstmt.close();
        }
    } catch ( SQLException sqlex ) {
        sqlex.printStackTrace();
        output.append( sqlex.toString() );
    }
    
    
    
}

}

coloca o tipo certo do argumento pstmt.setObject
coloca por exemplo pstmt.setDate (1, new java.util.date(argumento));

tenta ai… eu naum testei naum… eh soh uma idéia

nem deu cara ele reclama pois naum encontra o método setDate mesmo eu importando no cabeçalho.

Beleza?

 O método setDate() de um PreparedStatement espera receber um java.sql.Date, e não um java.util.Date. Então, você deveria fazer o seguinte:
java.util.Date minhaData = new java.util.Date();
...
meuPreparedStatement.setDate(1, new java.sql.Date(minhaData.getTime));
...
 Isto porque um dos construtores de java.sql.Date recebe um long que representa quantos milissegundos se passaram desde 00:00 de 01 de janeiro de 1970. O método getTime() de java.util.Date, por sua vez retorna um long que representa exatamente a mesma coisa!

Funcionou, me parece que agora o problema eh com a conversão dos dados, pois a tabela da consulta aparece vazia e no netbeans a jaanela output aparece uma referencia as linhas da tabela gerada da seguinte forma:
Type was: DATETIME
Type was: DOUBLE
Type was: DATETIME
Type was: DOUBLE
Type was: DATETIME
.
.
.

Funcionou, me parece que agora o problema eh com a conversão dos dados, pois a tabela da consulta aparece vazia e no netbeans a jaanela output aparece uma referencia as linhas da tabela gerada da seguinte forma:
Type was: DATETIME
Type was: DOUBLE
Type was: DATETIME
Type was: DOUBLE
Type was: DATETIME
.
.
.
vou te converter novamente para string?

nossaaaa…
desculpa pelo erro… eh um java.sql.Date

:oops:

nao entendi…ta executando e query mas o problema nao seria na exibição dos dados da tabela??