Pessoal, estou tendo problemas com o código abaixo.
Esse código faz consultas no banco conforme a escolha das opções no formulário e após monta no jsp o resultado. O problema é que nem sempre mostra os resultado por inteiro, ou seja chega na metade e para a montagem da tela. As vezes também dá erro de statement e fecha a conexão.
Alguém pode me dar um help com isso?
Desde já agradeço
Código de conexão e sql:
package util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.naming.InitialContext;
import javax.sql.DataSource;
public class ConexaoUtil {
private static Connection c;
private static Statement st;
private static DataSource ds;
private static ResultSet rs;
public ConexaoUtil(){
abreConexao();
}
public void abreConexao(){
try {
InitialContext ctx = new InitialContext();
//DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/bdportal");
DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/bdteste");
c = ds.getConnection();
//System.out.println(c);
//Class.forName("com.mysql.jdbc.Driver");
//c = DriverManager.getConnection("jdbc:mysql://localhost/agenda?zeroDateTimeBehavior=convertToNull","agenda","agenda");
} catch (Exception e) {
e.printStackTrace();
}
}
public ResultSet executeConsulta(String sql) throws SQLException {
st = c.createStatement();
rs = st.executeQuery(sql);
return rs;
}
public int executeAtualizacao(String sql) throws SQLException {
st = c.createStatement();
int i = st.executeUpdate(sql);
return i;
}
public void fechaConexao() {
try {
rs.close();
st.close();
c.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Servlet que recebe os parâmetros para a pesquisa e faz a apesquisa:
package servletsPortalAc;
import java.sql.Statement;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import util.*;
public class PesquisaSql extends HttpServlet {
@SuppressWarnings("deprecation")
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, SQLException, ParseException {
response.setContentType("text/html;charset=ISO-8859-1");
PrintWriter out = response.getWriter();
//INICIA AS VARIÁVEIS PARA RECEBER OS VALORES
String retorno = null;
String bgcolorPrazo = null;
String dataPreFormatada = null;
String tdpPos = null;
String dt_pesq = request.getParameter("dt_pesq");
String dt_pesq1 = request.getParameter("dt_pesq1");
String reu_pre = request.getParameter("reu_pre");
String nbrPos = request.getParameter("pos");
String nbrMe = request.getParameter("me");
String antecipa = request.getParameter("antecipa");
String emissor = request.getParameter("emissor");
String status = request.getParameter("status");
String projeto = request.getParameter("projeto");
String tecnologia = request.getParameter("negocio");
String tipo = (String) request.getParameter("tipo");
String modoFalha = (String) request.getParameter("modo_falha");
String motivo = (String) request.getParameter("motivo");
//INICIA DATA DE HOJE
String hoje = util.FormatadorDatas.data_hora();
if (dt_pesq==null && dt_pesq1==null && nbrPos==null && nbrMe==null && antecipa==null && emissor==null && status==null && projeto==null && tecnologia==null){
//retorno = (String) request.getParameter("retorno");
retorno = (String) request.getSession().getAttribute("retornoSession");
//retorno = (String) session.getValue("retornoSession");
//out.println(retorno);
}
else
{
String dataFormPesq = null;
String dataFormPesq1 = null;
if (!dt_pesq.equals("") && !dt_pesq1.equals("")){
Date data_pesq = new SimpleDateFormat("dd-MM-yyyy").parse(dt_pesq);
dataFormPesq = new SimpleDateFormat("yyyy-MM-dd").format(data_pesq);
Date data_pesq1 = new SimpleDateFormat("dd-MM-yyyy").parse(dt_pesq1);
dataFormPesq1 = new SimpleDateFormat("yyyy-MM-dd").format(data_pesq1);
}
// monta um array com as opções de pesquisa
List<String> lista = new ArrayList<String>();
if(dataFormPesq!=null && reu_pre==null)
lista.add("data>='"+dataFormPesq+"'");
if(dataFormPesq1!=null && reu_pre==null)
lista.add("data<='"+dataFormPesq1+"'");
if(dataFormPesq!=null && reu_pre!=null)
lista.add("data_pre>='"+dataFormPesq+"'");
if(dataFormPesq1!=null && reu_pre!=null)
lista.add("data_pre<='"+dataFormPesq1+"'");
if(!nbrPos.equals(""))
lista.add("pos = '"+nbrPos+"'");
if(!nbrMe.equals(""))
lista.add("me like '%"+nbrMe+"%'");
if(!antecipa.equals(""))
lista.add("antecipa = '"+antecipa+"'");
if(!emissor.equals(""))
lista.add("emissor = '"+emissor+"'");
if(!status.equals("Todos")&& !status.equals(""))
lista.add("status = '"+status+"'");
if(status.equals("Todos"))
lista.add("status != '-' and status!='' ");
if(!tecnologia.equals(""))
lista.add("negocio = '"+tecnologia+"'");
if(motivo.equals("Todos"))
lista.add("motivo != '-' and motivo!='' ");
if(!motivo.equals("Todos") && !motivo.equals(""))
lista.add("motivo = '"+motivo+"'");
if(!tipo.equals(""))
lista.add("tipo = '"+tipo+"'");
StringBuilder sb = new StringBuilder();
for(String s : lista){
sb.append(" and ").append(s);
}
retorno = sb.toString().replaceFirst("and", "");
}
request.getSession().setAttribute("retornoSession", retorno);
out.println(retorno);
//ABRE CONEXÃO COM O BANCO
ConexaoUtil c = new ConexaoUtil();
String totalRows = null;
Integer limit = 50;
List<AcAta> listaConsulta = new ArrayList<AcAta>();
List<AcAta> listaConsultaWf = new ArrayList<AcAta>();
try{
ResultSet rs_count = c.executeConsulta("SELECT COUNT(*) AS c FROM ac_ata where" +retorno+ "");
rs_count.next();
totalRows = (rs_count.getString("c"));
ResultSet rs_lista = c.executeConsulta("SELECT * FROM ac_ata where" +retorno+ " order by data LIMIT " + limit);
while(rs_lista.next()){
AcAta acAta = new AcAta();
acAta.setNbrAc(rs_lista.getString("id_ata"));
acAta.setDtCriacao(rs_lista.getDate("data"));
acAta.setPos(rs_lista.getString("pos"));
acAta.setMe(rs_lista.getString("me"));
acAta.setAntecipaAta(rs_lista.getString("antecipa"));
acAta.setAssuntoAta(rs_lista.getString("assunto"));
acAta.setEmissorAta(rs_lista.getString("emissor"));
acAta.setStatusAta(rs_lista.getString("status"));
acAta.setNegocioAta(rs_lista.getString("negocio"));
acAta.setProjetoAta(rs_lista.getString("projeto"));
acAta.setTipoRet(rs_lista.getString("tipo_ret"));
acAta.setTipoAta(rs_lista.getString("tipo"));
acAta.setChaveAta(rs_lista.getString("chave"));
acAta.setModoFalhaAta(rs_lista.getString("modo_falha"));
acAta.setMotivoAta(rs_lista.getString("motivo"));
acAta.setDataPre(rs_lista.getDate("data_pre"));
if(acAta.getDataPre()==null){
acAta.setBgcolorPrazo("class=rowpos");
}
if(acAta.getDataPre()!=null){
acAta.setDataPreFormatada(FormatadorDatas.formatoBrasil_sem_hora(acAta.getDataPre()));
acAta.setFarolDataPre(FormatadorDatas.getDiferencaDiasPrazo(acAta.getDataPre()));
}
if (acAta.getFarolDataPre() > 5){
acAta.setBgcolorPrazo("bgcolor=#00FF00");
}
if (acAta.getFarolDataPre() <= 5 && acAta.getFarolDataPre() >= 1){
acAta.setBgcolorPrazo("bgcolor=#FFFF00");
}
if (acAta.getFarolDataPre() <= 0){
acAta.setBgcolorPrazo("bgcolor=#FF0000");
}
//inicio 2º try/catch consulta
try{
ResultSet rs_tdp = c.executeConsulta("SELECT * FROM tdp_ata where pos='"+acAta.getPos()+"' order by pos");
if(rs_tdp.first()){
tdpPos = "Sim";
}
} catch (SQLException e1) {
e1.printStackTrace();
}
//fim 2º try/catch consulta
//inicio 3º try/catch consulta
int total_com_emi = 0;
try{
ResultSet rs_emissor = c.executeConsulta("SELECT COUNT(*) AS com_emi FROM ac_historico where (id_ata = '"+acAta.getNbrAc()+"' and area='Emissor') order by area");
rs_emissor.next();
total_com_emi = Integer.parseInt(rs_emissor.getString("com_emi"));
} catch (SQLException e3) {
e3.printStackTrace();
}
//fim 3º try/catch consulta
//inicio 4º try/catch consulta
String en = null;
try{
ResultSet rs_en = null;
rs_en = c.executeConsulta("SELECT * FROM cqa where (en = '"+acAta.getMe()+"') order by en");
if(rs_en.first())
{
en = rs_en.getString("en");
//out.println(en);
}
else {
en = "none";
}
} catch (SQLException e5) {
e5.printStackTrace();
}
//fim 4º try/catch consulta
//inicio 5º try/catch consulta
if (!en.equals("none")){
Date data_max = null;
String dataCqa = null;
try{
ResultSet rs_max = null;
rs_max = c.executeConsulta("SELECT max(prazo) as data_max FROM cqa_workflow where (en = '"+en+"') and prazo IS NOT NULL GROUP BY en ORDER BY max(prazo)ASC");
if(rs_max.first()){
data_max = rs_max.getDate("data_max");
}
} catch (SQLException e6) {
e6.printStackTrace();
}
//fim 5º try/catch consulta
//inicio 6º try/catch consulta
String dataPreMaior = null;
try{
if (data_max!=null && !data_max.equals("")){
dataCqa = FormatadorDatas.formatoBrasil_sem_hora(data_max);
acAta.setFarolDataMax(FormatadorDatas.getDiferencaDiasPrazo(data_max));
//out.println(bgcolorPrazo);
}
if(acAta.getDataPre()==null && data_max==null){
dataPreMaior = "-";
//out.println("1");
}
if(data_max==null){
dataPreMaior = dataPreFormatada;
//out.println("3");
}
if(acAta.getDataPre()==null){
dataPreMaior = dataCqa;
if (dataCqa==null){
dataPreMaior = "-";
}
//out.println("4");
}
if(acAta.getDataPre()!=null){
if(data_max.after(acAta.getDataPre())||data_max==null){
dataPreMaior = dataCqa;
//out.println("5");
}
else{
dataPreMaior = dataPreFormatada;
//out.println("6");
}
if (dataPreMaior==null){
dataPreMaior = "-";
//out.println("7");
}
}
} catch (Exception e8) {
e8.printStackTrace();
}
}
listaConsulta.add(acAta);
}
//}
for(AcAta resultado : listaConsulta){
ResultSet rs_areas = c.executeConsulta("SELECT * FROM ac_workflow where (id_ata = '"+resultado.getNbrAc()+"') order by id_wf asc");
while(rs_areas.next()){
AcAta acAta = new AcAta();
acAta.setNbrAcWf(rs_areas.getString("id_ata"));
acAta.setAreaAc(rs_areas.getString("area"));
//out.println(rs_areas.getString("area"));
acAta.setStatusAc(rs_areas.getString("status"));
ResultSet rs_com = c.executeConsulta("SELECT COUNT(*) AS com FROM ac_historico where (id_ata = '"+resultado.getNbrAc()+"' and area='"+acAta.getAreaAc()+"') order by area");
rs_com.next();
acAta.setTotalComment(Integer.parseInt(rs_com.getString("com")));
listaConsultaWf.add(acAta);
}
}
for(AcAta resultadoWf : listaConsultaWf){
// out.println(resultadoWf.getAreaAc()+"<br/>");
//out.println(resultadoWf.getStatusAc()+"<br/>");
}
} catch (SQLException e) {
//out.println("Data Nula ou não existe");
e.printStackTrace();
}
c.fechaConexao();
request.setAttribute("listaConsulta",listaConsulta);
request.setAttribute("listaConsultaWf",listaConsultaWf);
String nextJSP = "/ac/acPesquisa_sql.jsp?totalRows="+totalRows;
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(nextJSP);
dispatcher.forward(request,response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
try {
processRequest(request, response);
} catch (SQLException e) {
e.printStackTrace();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
try {
processRequest(request, response);
} catch (SQLException e) {
e.printStackTrace();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}