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)
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() );
}
}
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?