Dúvidas conexão banco de dados

6 respostas
escaravelho

Pessoal,

Estou fazendo o diagrama de classes de uma aplicação que irei desenvolver. Esta aplicação será web e irei utilizar Servlets, JSP e JavaBeans.

Minhas dúvidas:

A minha classe para conexão com banco de dados será um JavaBean ou classe Java normal?

Podem me dizer como seria essa implementação, por favor.

Desde já obrigado.

6 Respostas

celia_fernandes

Java normal, cria seu formulário no action do formulário vc chama sua servlet correspondente ao formulário… cria seu script no banco e pronto…qual banco vc utilizará?

escaravelho

Usarei o SGBD MySQL.

E depois de passar pelo servlet, eu tenho que passar para outra página, e depois acionar um Bean, esse Bean vai extender essa minha classe de conexão que você citou.

Seria isso?

celia_fernandes

Olha eu fiz uma classe .java BDConector, serve para tres bancos, como vc vai usar apenas mysql considere apenas os comandos do mysql q está aí…na sua servlet correspondente ao formulário vc só chama esse BDConector e prontooo! :lol:

package Conexao;
import java.sql.*;

public class BDConector
{
   private static BDConector instance = null;
   private Connection conn = null;
   private String banco;
   //Construtor que carrega o campo estático conn com uma conexão ao banco.
   private BDConector(String tipo) throws Exception
   {
	   banco = tipo;
	   /*
	    * Conexão com o Oracle
	    *  
	    */
	   if (banco.equals("oracle"))
	   {
	   try
	   {
	         Class.forName("oracle.jdbc.OracleDriver");
	         conn = DriverManager.getConnection(
	            "jdbc:oracle:thin:@127.0.0.1:1521", "SYSTEM", "123456"
	         );
	      }
	   catch(Exception e)
	      {
	         throw new Exception(e.getMessage());
	      }
	   
	   }
	   else
	   if (banco.equals("postgresql"))
	   {
	   {
	   /*
	    * Conexão com PostGreSQL
	    *  
	    */
	   try
	   {
         Class.forName("org.postgresql.Driver");
         conn = DriverManager.getConnection
         (
            "jdbc:postgresql://localhost:5432/meubanco", "postgres", "postgres"
         );
      }catch(Exception e)
      {
         throw new Exception(e.getMessage());
      }
	  }
	   }// fim do else
	   else
       if (banco.equals("mysql"))
       {
	   {
		   /*
		    * Conexão com MySQL
		    *  
		    */
		   try {
			   Class.forName("org.gjt.mm.mysql.Driver");
		         conn = DriverManager.getConnection("jdbc:mysql://localhost/teste", "root","");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
			} catch (SQLException e) {
			e.printStackTrace();
			}   
		
		  }// fim do else
       }   
   }
   //Método estático que será chamado pelo cliente. Ele só cria uma instância se a 
   //atual for nula. 
   public static BDConector getInstance(String tipo) throws Exception
   {
      if(instance == null)
      {
    	  System.out.println("Instância NOVA criada");
         instance = new BDConector(tipo);
      }
      else
    	  System.out.println("Instância JÁ criada");
      return instance;
   }
   public Connection getConnection()
   {
      return conn;
   }
   public static void closeConnection(Statement stmt, ResultSet rs) 
   throws Exception
   {
      close(stmt, rs);
   }
   public static void closeConnection(Statement stmt) 
   throws Exception
   {
      close(stmt, null);
   }
   public static void close(Statement stmt, ResultSet rs)
   throws Exception
   {
      try
      {
         if(rs != null)rs.close();
         if(stmt != null)stmt.close();
      }
      catch (Exception e)
      {
         throw new Exception(e.getMessage());
      }
   }
}
celia_fernandes

Aqui vai um exemplo da servlet que chama esse BDConector…

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import Conexao.BDConector;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.JasperRunManager;
import net.sf.jasperreports.engine.util.JRLoader;

/**
 * Servlet implementation class ServletDepartamento
 */
public class ServletDepartamento extends HttpServlet 
{
	
	private static final long serialVersionUID = 1L;
	private BDConector con = null;
       
    public ServletDepartamento() 
    {
        super();
        // TODO Auto-generated constructor stub
    }

    protected void processRequest (HttpServletRequest request, HttpServletResponse response)
    throws Exception
    {
		String action = request.getParameter("escondido");

     	/*
     	 * O Objeto con, pega uma instância da classe
     	 * BDConector, que é Multi-banco-de-dados,
     	 * podendo ser: oracle, postgresql ou mysql
		 * Através deste objeto con, pode-se efetuar
		 * a chamada ao método:
		 * getConnection()
		 *
		 */
		con = BDConector.getInstance("oracle");

		try 
		{
			if (action.equalsIgnoreCase("cadastrar")) 
			{
				PrintWriter out = response.getWriter();
				out.println("<HTML><BODY><h2>");
				out.println("<BR><span style=\"color: #FF0000\">");
				out.println("");
				out.println("</span></h2><BODY><HTML>");
				
				if(request.getParameter("textfield2").equals(""))
				{
					out.println("Informe o departamento!");
					
				}
				   try
				   {
				      int coddpto=Integer.parseInt(request.getParameter("textfield1"));
					  String dpto= request.getParameter("textfield2");
					  Statement curStmt = con.getConnection().createStatement();

				          ResultSet busca = curStmt.executeQuery("select codigo_departamento from departamento where codigo_departamento = "+coddpto);
				          if(busca.next()==true)
				          {
				             out.println("<br><br><p><h2 align = CENTER>Manutenção de Departamentos</h2></p>");
				             out.println("<br><br><p><h3 align = CENTER>Departamento já cadastrado.</h3></p>");
				          }
				          else
				          {    

				           boolean res = curStmt.execute("INSERT INTO departamento Values ("+coddpto+",'"+dpto + "')");
				           curStmt.close();
				           // A conexão fica aberta
                           //con.close(); // Fecha a conexão com o Banco de Dados


				           out.println("<p align='center'><font size='3' face='Verdana'><strong>Cadastro");
				           out.println("efetuado com sucesso!</strong></font></p><hr>");
				           out.println("<p align='center'><textarea name='S1' rows='6' cols='32'>"+coddpto+","+dpto+",");
				           out.println("recebemos suas informações em nosso Banco de Dados.");
				           out.println("");
				           out.println("Atenciosamente,");
				           out.println("");
				           out.println("Controle de Departamentos.</textarea></p>");
				          }//else
				   }
				   catch(SQLException ex)
				   {
				      out.println("<p><h3 align = CENTER>Problemas com o banco de Dados!</h3></p>");
				      out.println(ex);
				   }
				   catch(java.lang.Exception ex)
				   {
				      out.println("<p><h3 align = CENTER>Erro de Comunicacao!</h3></p>");
				      out.println(ex);
				   }

			} 
			else if (action.equalsIgnoreCase("listar")) 
			{
				//actionListarCidadesDesc(request, response);
				PrintWriter out = response.getWriter();
				out.println("<HTML><BODY><h2>");
				out.println("<BR><span style=\"color: #FF0000\">");
				out.println("");
				out.println("</span></h2><BODY><HTML>");
				
				   try
				   {
				          String cor="#FFFFFF";
					      Statement curStmt = con.getConnection().createStatement();
				          ResultSet res = curStmt.executeQuery("select * from departamento order by departamento_dep");

				          out.println("<h1 align=center>Departamentos Cadastrados</h1><br>");
				          out.println("<table align='center' border='2' cellpadding='0' cellspacing='0' bgcolor='#808080' width='500'>");
				          out.println("<tr>");
				          out.println("<td><font color='#FFFFFF' face='Verdana'><strong>Código do Departamento</strong></font></td>");
				          out.println("<td><font color='#FFFFFF' face='Verdana'><strong>Departamento</strong></font></td>");
				          out.println("</tr>");
				          while (res.next()==true)
						  {
				             out.println("<tr>");
				             out.println("<td bgcolor='"+cor+"'><font face='Verdana'>"+res.getInt("codigo_departamento")+"</td>");
				             out.println("<td bgcolor='"+cor+"'><font face='Verdana'>"+res.getString("departamento_dep")+"</td>");
				             out.println("</tr>");

					     if(cor.equals("#FFFFFF")) 
						  cor="#C0C0C0"; 
				          else    
				               if(cor.equals("#C0C0C0")) 
							      cor="#FFFFFF"; 
				          }
				          curStmt.close();
				          out.println("</table><br><br>");
				   }
				   catch(SQLException ex)
				   {
				      out.println("<p><h3 align = CENTER>Problemas com o banco de Dados!</h3></p>");
				      out.println(ex);
				   }
				   catch(java.lang.Exception ex)
				   {
				      out.println("<p><h3 align = CENTER>Erro de Comunicacao!</h3></p>");
				      out.println(ex);
				   }
			}   
					else
						if (action.equalsIgnoreCase("alterar")) 
						{
							PrintWriter out = response.getWriter();
							out.println("<HTML><BODY><h2>");
							out.println("<BR><span style=\"color: #FF0000\">");
							out.println("Alterado com Sucesso!");
							out.println("</span></h2><BODY><HTML>");
							
							   try
							   {
								 int coddpto=Integer.parseInt(request.getParameter("textfield1"));
								 String dpto= request.getParameter("textfield2");
								
								 Statement curStmt = con.getConnection().createStatement();

								 	  ResultSet busca = curStmt.executeQuery("select codigo_departamento from departamento where codigo_departamento = "+coddpto);
								 	  if(!busca.next()==true) // caso não encontre o grupo
								 	  {
							             out.println("<br><br><p><h2 align = CENTER>Manutenção de Departamentos</h2></p>");
							             out.println("<br><br><p><h3 align = CENTER>Não é possível fazer a alteração pois o código não está cadastrado!</h3></p>");
							          }
							          else
							          {    
		 				        	   out.print("UPDATE departamento set codigo_departamento="+coddpto+",departamento_dep='"+dpto+"' WHERE CODIGO_DEPARTAMENTO = '" + coddpto+"'");
							           boolean res = curStmt.execute("UPDATE departamento set codigo_departamento="+coddpto+",departamento_dep='"+dpto+"' WHERE codigo_departamento = '" + coddpto+"'");
							           curStmt.close();

							           out.println("<p align='center'><font size='3' face='Verdana'><strong>Cadastro");
							           out.println("de Departamentos</strong></font></p><hr>");
							           out.println("<p align='center'><textarea name='S1' rows='6' cols='32'>"+dpto+",");
							           out.println("ALTERAMOS suas informações em nosso Banco de Dados.");
							           out.println("");
							           out.println("Atenciosamente,");
							           out.println("");
							           out.println("Controle de Departamentos.</textarea></p>");
							          }//else
							   }
							   catch(SQLException ex)
							   {
							      out.println("<p><h3 align = CENTER>Problemas com o banco de Dados!</h3></p>");
							      out.println(ex);
							   }
							   catch(java.lang.Exception ex)
							   {
							      out.println("<p><h3 align = CENTER>Erro de Comunicacao!</h3></p>");
							      out.println(ex);
							   }
							
						}
						else
							if (action.equalsIgnoreCase("excluir")) {
								//actionListarCidades(request, response);
								PrintWriter out = response.getWriter();
								out.println("<HTML><BODY><h2>");
								out.println("EXCLUIR: <BR><span style=\"color: #FF0000\">");
								out.println("Excluído com Sucesso!");
								out.println("</span></h2><BODY><HTML>");
								
								   try
								   {
										  int coddpto=Integer.parseInt(request.getParameter("textfield1"));
										  String dpto= request.getParameter("textfield2");
										
										  Statement curStmt = con.getConnection().createStatement();

										  ResultSet busca = curStmt.executeQuery("select codigo_departamento from departamento where codigo_departamento = "+coddpto);
										  if(!busca.next()==true) // caso não encontre o grupo
										  {
								             out.println("<br><br><p><h2 align = CENTER>Manutenção de Departamentos</h2></p>");
								             out.println("<br><br><p><h3 align = CENTER>Não é possível excluir pois o código não está cadastrado.</h3></p>");
								          }
								          else
								          {   
								           boolean res = curStmt.execute("DELETE FROM departamento where codigo_departamento = "+coddpto);
								           curStmt.close();

								           out.println("<p align='center'><font size='3' face='Verdana'><strong>Cadastro");
								           out.println("de Departamentos</strong></font></p><hr>");
								           out.println("<p align='center'><textarea name='S1' rows='6' cols='32'>"+dpto+",");
								           out.println("a EXCLUSÃO foi efetuada com sucesso.");
								           out.println("");
								           out.println("Atenciosamente,");
								           out.println("");
								           out.println("Direção de Desenvolvimento.</textarea></p>");
								          }//else
								   }
								   catch(SQLException ex)
								   {
								      out.println("<p><h3 align = CENTER>Problemas com o banco de Dados!</h3></p>");
								      out.println(ex);
								   }
								   catch(java.lang.Exception ex)
								   {
								      out.println("<p><h3 align = CENTER>Erro de Comunicacao!</h3></p>");
								      out.println(ex);
								   }
								
							}
							else
								if (action.equalsIgnoreCase("Relatorio"))
								{
									
									//ServletContext context = getServletContext();

									byte[] bytes = null;

									try {
										//JasperReport relatorioJasper = (JasperReport) JRLoader.loadObject(context.getRealPath("/relatorio/Relatorio_Grupo.jasper"));
										JasperReport relatorioJasper = (JasperReport) JRLoader.loadObject("C:\\Documents and Settings\\Celia\\Meus documentos\\testandoMONO\\ProjetoServletTFG\\WebContent\\Relatorios\\RelatorioDepartamento.jasper");
										

										Map<String, Object> params = new HashMap<String, Object>();
										//params.put("DATA", dataServidor);
										//params.put("MES_ANO_INI", dataInicial);
										//params.put("MES_ANO_FIM", dataFinal);
										//params.put("OBSERVACOES", "NÃO CONSTA AS DESPESAS GERADAS COM MATERIAIS DE ORTESE E PROTESE");

										//bytes = JasperRunManager.runReportToPdf(relatorioJasper, params, ds);
										bytes = JasperRunManager.runReportToPdf(relatorioJasper, params, con.getConnection());
									} 
									catch (JRException e) 
									{
										e.printStackTrace();
									}

									if (bytes != null && bytes.length > 0) 
									{
										response.setContentType("application/pdf");
										response.setContentLength(bytes.length);

										ServletOutputStream ouputStream = response.getOutputStream();
										ouputStream.write(bytes, 0, bytes.length);
										ouputStream.flush();
										ouputStream.close();

										//gerou = true;
									}
									
								}
				} 
		          catch (Exception e) 
		        {
		            PrintWriter out = response.getWriter();
					out.println("<HTML><BODY><h2>");
					out.println("ERRO: <BR><span style=\"color: #FF0000\">");
					out.println(e.getMessage());
					out.println("</span></h2><BODY><HTML>");
					e.printStackTrace();
					
					
				}
		          finally 
		        {
					//PrintWriter out = response.getWriter();
				    //out.close();
				}
		    	
		    }
    
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		try 
		{
			this.processRequest(request, response);
		} catch (Exception e) 
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		try 
		{
			this.processRequest(request, response);
		} 
		catch (Exception e) 
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}
escaravelho

Entendi.

Já sei que irei fazer no meu caso.

:smiley:

Obrigado.

D

Qualquer duvida sobre aplicações para desktop pode contar cmg, web nao é minha praia

Criado 30 de setembro de 2009
Ultima resposta 17 de mai. de 2011
Respostas 6
Participantes 3