Bom tenho um aplicativo que usa um bean, e uma jsp com tags do cewolf, pra gerar uns graficos. Contudo, a minha consulta ao MySQL sempre ta retornando um valor Zero.
[code]/*
- ConexaoMysql.java
- Created on 21 de Junho de 2006, 13:46
- To change this template, choose Tools | Template Manager
- and open the template in the editor.
*/
/**
*
-
@author Fernando
*/
package br.feps.silva.banco;
import java.sql.*;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
//import org.apache.log4j.Logger;
public class ConexaoMySQL {
private static Connection conn;
private static Statement stm;
private static PreparedStatement pstm;
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DATABASE_URL = "jdbc:mysql://localhost/cmuf";
/** Creates a new instance of ConexaoMysql */
public static void Conectar() {
try
{
Class.forName(JDBC_DRIVER).newInstance();
conn = DriverManager.getConnection(DATABASE_URL,"USER","SENHA");
stm = conn.createStatement();
//pstm = conn.createPreparedStatement();
}//fim do try
catch (SQLException sqlException )
{
sqlException.printStackTrace();
}//fim do catch
catch (InstantiationException e) {
System.out.println("Não foi possivel instânciar o driver MySQL "
+ e.toString());
}
catch (IllegalAccessException e) {
System.out.println("Não foi possivel instânciar o driver MySQL "
+ e.toString());
}
catch (ClassNotFoundException e) {
System.out.println("Não foi possivel encontrar o driver MySQL "
+ e.toString());
}
}//fim do metodo conectar
public static Connection getConn() {
if (conn == null) {
Conectar();
}//fim do if
return conn;
}//fim do metodo Connection
public static Statement getStm() {
if (conn == null) {
Conectar();
}
try {
stm = conn.createStatement();
}
catch (SQLException e) {
e.printStackTrace();
System.out.println("Não foi possivel criar um Statement "
+ e.toString());
}//fim do catch
return stm;
}//fim do getStm
public static void fechaConexao() {
try {
conn.close();
}
catch (SQLException e) {
e.printStackTrace();
System.out.println("Não foi possivel fechar a conexão "
+ e.getMessage());
}//fim do catch
}//fim do metodo fechaConexao
}
[/code]
O segundo programa que é utilizado na Jsp
[code]/*
- CargaDiario.java
- Created on 9 de Julho de 2006, 18:41
- To change this template, choose Tools | Template Manager
- and open the template in the editor.
*/
/**
*
-
@author Fernando
*/
package br.feps.silva.dataset;
import java.sql.*;
import java.util.Date;
import java.util.Map;
import org.jfree.data.general.DefaultPieDataset;
import br.feps.silva.banco.ConexaoMySQL;
import de.laures.cewolf.DatasetProduceException;
import de.laures.cewolf.DatasetProducer;
public class CargaDiario implements DatasetProducer {
public Object produceDataset(Map arg0) throws DatasetProduceException {
DefaultPieDataset ds = new DefaultPieDataset();
PreparedStatement pstm = null;
String refFaseA = "0";
String refFaseB = "0";
String refFaseC = "0";
String NomeCarga = "Elevadores"; //tem que vir de uma jsp [request.getparameter("NomeCarga");]
String Local = "cemig"; // tem que vir de uma jsp
String data = "2002-01-02"; // tem que vir de uma jsp
double ValorFaseA = 0;
double ValorFaseB = 0;
double ValorFaseC = 0;
//Aqui vem as legendas dos graficos
String L1 = "Carga Fase A";
String L2 = "Carga Fase B";
String L3 = "Carga Fase C";
String titulo = "Acumulo de carga em " +data+ " em "+NomeCarga+" da "+ Local;
//String query1 = "";
try{
Connection conexao = ConexaoMySQL.getConn();
PreparedStatement VfaseA = conexao.prepareStatement("SELECT autocod FROM carga WHERE fase = 'A' AND nome = ?");
PreparedStatement VfaseB = conexao.prepareStatement("SELECT autocod FROM carga WHERE fase = 'B' AND nome = ?");
PreparedStatement VfaseC = conexao.prepareStatement("SELECT autocod FROM carga WHERE fase = 'C' AND nome = ?");
VfaseA.setString(1, NomeCarga);
VfaseB.setString(1, NomeCarga);
VfaseC.setString(1, NomeCarga);
VfaseA.executeQuery();
VfaseB.executeQuery();
VfaseC.executeQuery();
//Captura os valores da consulta para um ResultSet
ResultSet rs = VfaseA.executeQuery();
ResultSet rs2 = VfaseB.executeQuery();
ResultSet rs3 = VfaseC.executeQuery();
while(rs.next()){
refFaseA += rs.getDouble("autocod");
}
while(rs2.next()){
refFaseB += rs2.getDouble("autocod");
}
while(rs3.next()){
refFaseC += rs3.getDouble("autocod");
}
//System.out.printf("O valor de referência da carga na fase A é:%s\n", refFaseA);
//System.out.printf("O valor de referência da carga na fase B é:%s\n", refFaseB);
//System.out.printf("O valor de referência da carga na fase C é:%s\n", refFaseC);
//Até este ponto o programa capturou o numero da String carga no BD para realizar as consultas no BD com valor
PreparedStatement QfaseA = conexao.prepareStatement("SELECT valor FROM cemig WHERE carga = ? AND data = ?");
PreparedStatement QfaseB = conexao.prepareStatement("SELECT valor FROM cemig WHERE carga = ? AND data = ?");
PreparedStatement QfaseC = conexao.prepareStatement("SELECT valor FROM cemig WHERE carga = ? AND data = ?");
//Enviando as Strings carga com os novos valores obtidos da consulta anterior
//QfaseA.setString(1, local);
//QfaseB.setString(1, local);
//QfaseC.setString(1, local);
QfaseA.setString(1, refFaseA);
QfaseB.setString(1, refFaseB);
QfaseC.setString(1, refFaseC);
QfaseA.setString(2, data);
QfaseB.setString(2, data);
QfaseC.setString(2, data);
QfaseA.executeQuery();
QfaseB.executeQuery();
QfaseC.executeQuery();
//armazena valores
ResultSet rs4 = QfaseA.executeQuery();
ResultSet rs5 = QfaseB.executeQuery();
ResultSet rs6 = QfaseC.executeQuery();
while(rs4.next()){
ValorFaseA += rs4.getDouble("valor");
//ds.setValue(ValorFaseA);
}
while(rs5.next()){
ValorFaseB += rs5.getDouble("valor");
}
while(rs6.next()){
ValorFaseC += rs6.getDouble("valor");
}
//System.out.printf("O valor total da carga %s(%s) na Fase A é:%s\n", refFaseA, NomeCarga, ValorFaseA);
//System.out.printf("O valor total da carga %s(%s) na Fase B é:%s\n", refFaseB, NomeCarga, ValorFaseB);
//System.out.printf("O valor total da carga %s(%s) na Fase C é:%s\n", refFaseC, NomeCarga, ValorFaseC);
ds.setValue(L1, ValorFaseA);
ds.setValue(L2, ValorFaseB);
ds.setValue(L3, ValorFaseC);
}
catch (SQLException e) {
}
return ds;
}//fim do objeto
public boolean hasExpired(Map arg0, Date arg1) {
return true;//para expirar em 5 segundos [return (System.currentTimeMillis() - since.getTime()) > 5000;]
}//fim do boolean
public String getProducerId() {
return "CargaDiario";
}
}[/code]
Engraçado que em um outro aplicativo que criei(não web, possui um main proprio) que tem o TRY exatamente igual ao do arquivo a cima, consigo os valores corretos e gerar o grafico. So no apliacativo web que esta dando esse erro, retornando os valores pra consulta como ZERO. Algum saberia porque? Obrigado!