import java.sql.*;
import javax.swing.JOptionPane;
public class AgendaDAO {
//objeto que controla a conexão
public Connection con;
//objeto que executa as querys
public PreparedStatement pstm;
public Statement stm;
public ResultSet carregaAgenda(){
String sql="Select * from agenda";
ResultSet rs=null;
try {
con = new Conexao().criaConexao();
stm =con.createStatement();
rs = stm.executeQuery(sql);
return rs;
}
catch (SQLException ex) {
JOptionPane.showMessageDialog(null,"Não ha clientes Cadastrados: "+ex.getMessage()+ex.getSQLState());
}
finally{
//como o método retorna um resultset, se eu fechar a conexão me da um erro pois o resultset esta fechado
//sera que o problema pode ser esse?
return rs;
}
}
public ResultSet carregaAgenda(String data){
String query;
if(data.length()==10)
query="Select * from agenda where data='"+data+"'";
else
query="Select * from agenda where data like'"+data+"%'";
ResultSet rs=null;
try {
con = new Conexao().criaConexao();
stm =con.createStatement();
rs = stm.executeQuery(query);
return rs;
}
catch (SQLException ex) {
JOptionPane.showMessageDialog(null,"Não ha clientes Cadastrados: "+ex.getMessage()+ex.getSQLState());
}
finally{
//aqui a mesma coisa, se eu fechar a conexão, da um erro, dizendo que o resultset esta vazio ou nulo
return rs;
}
}
public void alteraAgenda(int id, String nome, String doutor, String data, String hora){
String sql="UPDATE agenda SET Nome=?, doutor=? data=? hora=? WHERE id=?";
try{
con = new Conexao().criaConexao();
pstm =con.prepareStatement(sql);
pstm.setString(1,nome);
pstm.setString(2, doutor);
pstm.setString(3, data);
pstm.setString(4, hora);
pstm.setInt(5, id);
pstm.executeUpdate();
JOptionPane.showMessageDialog(null, "Agenda alterada com sucesso");
this.desconectar();
}
catch (SQLException e){
JOptionPane.showMessageDialog(null, "Problema ao alterar agenda: "+e.getMessage());
}
}
public void excluirCliente(int id){
String sql="Delete FROM Cliente WHERE ID=?";
try{
con = new Conexao().criaConexao();
pstm =con.prepareStatement(sql);
pstm.setInt(1,id);
pstm.executeUpdate();
//JOptionPane.showMessageDialog(j, "Cliente Excluído");
this.desconectar();
}
catch (SQLException e){
JOptionPane.showMessageDialog(null, "Problema ao conectar na classe AgendaDAO! "+e.getMessage());
}
}
public void desconectar(){
try{
if(con!=null)
con.close();
if(stm!=null)
stm.close();
}
catch (SQLException sqle){
JOptionPane.showMessageDialog(null, "Problema ao desconectar!" +sqle.getMessage());
}
}
}
Aqui a Servelet:
import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import javax.swing.JOptionPane;
public class Agenda extends HttpServlet{
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response)throws IOException, ServletException {
int opc=Integer.parseInt(request.getParameter("operacao"));
JOptionPane.showMessageDialog(null, "Este é o número da opção: "+opc);
if(opc==1){
AgendaDAO agenda=new AgendaDAO();
ResultSet rs=agenda.carregaAgenda();
response.setContentType("text/html");
PrintWriter out = response.getWriter();
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
String data=sdf.format( new java.util.Date());
out.println("<h1 id='dia'>Dia "+data+"</h1>");
out.println("<div class='table' id='tabela_agenda'>");
out.println("<table class='tabela'>");
out.println("<thead>");
out.println("<tr id='first_line'>");
out.println("<td class='time'>Horário</td><td>Paciente</td><td>Doutor</td><td class='situation'>Situação</td><td class='edit'>Editar</td");
out.println("></tr>");
out.println("</thead>");
out.println("<tbody>");
try{
while(rs.next()){
//pega o estatus e devolve em String
boolean sta=rs.getBoolean(6);
String status=getStatus(sta);
out.println("<tr><td>"+rs.getString(4)+"</td>");
out.println("<td>"+rs.getString(2)+"</td>");
out.println("<td>"+rs.getString(5)+"</td>");
out.println("<td>"+status+"</td>");
out.println("<td><input type='hidden' value='"+rs.getString(1)+"' /><a ><img /></a></td></tr>");
}
}
catch(SQLException e){
out.println("<h1 style='color:red; font-size:30px'>Não foi possível carregar a agenda: "+ e.getMessage()+"</h1>");
}
out.println("</tbody>");
out.println("</table>");
out.println("</div>");
out.println("<div id='form_search'>");
out.println("<input type='text' name='data' id='campo_de_procura' value='Insira uma data aqui' onmouseover='limpaTexto()' onmouseout='carregaTexto()' /><br />");
out.println("<input type='submit' id='buscar_data' value='Procurar' onclick='buscaData()' />");
out.println("</div>");
out.println("<div id='pagination'>");
out.println("<div id='previous'>");
out.println("<a >«Anterior</a>");
out.println("</div>");
out.println("<div id='next'>");
out.println("<a >Próximo»</a>");
out.println("</div>");
out.println("</div>");
}
if(opc==2){
String data=request.getParameter("data");
//formata a data caso a pessoa só tenha digitado o dia, ou o mês
if(request.getParameter("data").length()<3){
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
data=sdf.format( new java.util.Date());
data=request.getParameter("data")+data.substring(2, 10);
//JOptionPane.showMessageDialog(null, data);
}
else{
if(request.getParameter("data").length()>=3 && request.getParameter("data").length()<6){
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
data=sdf.format( new java.util.Date());
data=request.getParameter("data")+data.substring(5, 10);
//JOptionPane.showMessageDialog(null, data);
}
}
JOptionPane.showMessageDialog(null, "Esta funcionando");
AgendaDAO agenda=new AgendaDAO();
ResultSet rs=agenda.carregaAgenda(data);
response.setContentType("text/html");
PrintWriter out = response.getWriter();
//out.println("<h1 id='dia'>Dia "+data+"</h1>");
//out.println("<div class='table' id='tabela_agenda'>");
out.println("<table class='tabela'>");
out.println("<thead>");
out.println("<tr id='first_line'>");
out.println("<td class='time'>Horário</td><td>Paciente</td><td>Doutor</td><td class='situation'>Situação</td><td class='edit'>Editar</td");
out.println("></tr>");
out.println("</thead>");
out.println("<tbody>");
try{
while(rs.next()){
//pega o estatus e devolve em String
boolean sta=rs.getBoolean(6);
String status=getStatus(sta);
out.println("<tr><td>"+rs.getString(4)+"</td>");
out.println("<td>"+rs.getString(2)+"</td>");
out.println("<td>"+rs.getString(5)+"</td>");
out.println("<td>"+status+"</td>");
out.println("<td><input type='hidden' value='"+rs.getString(1)+"' /><a ><img /></a></td></tr>");
}
}
catch(SQLException e){
out.println("<h1 style='color:red; font-size:30px'>Não foi possível carregar a agenda: "+ e.getMessage()+"</h1>");
}
out.println("</tbody>");
out.println("</table>");
out.println("</div>");
out.println("<div id='form_search'>");
out.println("<input type='text' name='data' id='campo_de_procura' value='Insira uma data aqui' onmouseover='limpaTexto()' onmouseout='carregaTexto()' /><br />");
out.println("<input type='submit' id='buscar_data' value='Procurar' onclick='buscaData()' />");
out.println("</div>");
out.println("<div id='pagination'>");
out.println("<div id='previous'>");
out.println("<a >«Anterior</a>");
out.println("</div>");
out.println("<div id='next'>");
out.println("<a >Próximo»</a>");
out.println("</div>");
out.println("</div>");
}
}
public String getStatus(boolean b){
String resp="";
if(b)
resp="Confirmado";
else
resp="A Confirmar";
return resp;
}
}
este é o código javascript que faz a requisição quando a página jsp carrega:
$('#tab1').load('http://localhost:8080/Agenda?operacao=1', function() { $('.tabela').columnFilters()});
este é o código que faz a busca quando o usuario clica em procurar na página JSP:
var data=document.getElementById('dia').firstChild.nodeValue;
$('#tab1').load('http://localhost:8080/Agenda?operacao=2&data='+data, function() { $('#tabela_agenda .tabela').columnFilters()});
a função que vai dentro da requisição, é apenas uma função de callback, pra realizar um filtro na tabela que exibe os dados, depois que ela é carregada via Ajax
e data é uma variável
Tem como saber pelo sistema operacional se tem varias conexões abertas?
essas conexões ficam abertas mesmo após desligar o PC?
Obrigado pela ajuda