SEJAM BEM VINDOS!!!

Este blog é destinado a todos que interessam em aprender e compartilhar conhecimento sobre desenvolvimento de aplicativos, linguagens de programação, banco de dados, entre outros.

O que é OCX?

Abreviatura de OLE custom control. Módulo de software que se baseia nas tecnologias OLE e COM que, quando chamado por uma aplicação, produz um controle que acrescenta algum recurso interessante à aplicação. A tecnologia OCX é independente de plataforma, opera em sistemas operacionais de 16 e 32 bits e pode ser usada com várias aplicações. É a sucessora da tecnologia VBX (Visual Basic custom control), que aceitava apenas aplicações do Visual Basic, e constitui a base dos controles ActiveX. Os controles OCX podem ser criados em diversas linguagens, embora o Visual C++ seja a linguagem mais utilizada. Desenvolvida pela Microsoft, a tecnologia OCX é tratada na especificação OCX 96 (1996 OLE Controls specification). Pesquise também ActiveX controls (controles ActiveX); COM (definição 2); control (controle – definição 2); OLE; VBX; Visual Basic.

Fonte: http://o-que-significa.blogspot.com.br/2011/06/ocx.html#.UxivZPldXik

domingo, 9 de março de 2014

Conexão Simples JSP + Servlet + Banco de Dados

Ola tudo bem? Hoje vamos falar de conexão a banco de dados utilizando JSP e Servlet, não vamos nos preocupar hoje com padrão de projetos, camadas entre outros, vamos nos ater neste momento apenas na inserção e recuperação das informações do banco de dados.
Para a execução desta tarefa vamos utilizar o NetBeans 7.3 ou superior que pode ser encontrado em [https://netbeans.org/downloads/] versão [Java EE] ou completa.

Para acompanhar este post é necessário conhecer:
  • Estrutura de Projetos no NetBeans;
  • Adicionar Bibliotecas(JARs);
  • HTML básico;
  • Linguagem JAVA
  • SQL (mais sobre)
Com o NetBeans aberto vamos criar um novo projeto JSP através do caminho [Menu Arquivo\Novo Projeto\Java Web\Aplicação Web]  clique em [próximo], defina o nome de sua aplicação e depois o local, por padrão fica a pasta clique em [próximo], agora vem a definição de qual servidor iremos utilizar, escolha entre [Apache Tomcat] ou [GlassFish Server] , clique em [finalizar] e a estrutura do seu projeto será criada.

Para realizar a conexão com banco de dados, é necessário utilizar algumas bibliotecas. Para conectar a um banco MySql deve se utilizar o jar [mysql-connector-java-5.1.29-bin.jar] disponível em [http://dev.mysql.com/downloads/connector/j/] , para conexão com o SQL Server utilize o jar [sqljdbc4-3.0.jar] disponível em [http://www.java2s.com/Code/Jar/s/Downloadsqljdbc430jar.htm].


No index.jsp vamos criar um menu, contendo o seguinte código HTML
 

 <%@page contentType="text/html" pageEncoding="UTF-8"%>  
 <!DOCTYPE html>  
 <html>  
   <head>  
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
     <title>Conexão Simples</title>  
   </head>  
   <body>  
     <h1>Menu</h1>  
     <a href="incluir.jsp">Incluir</a><br>  
     <a href="listar.jsp">Listar</a><br>  
   </body>  
 </html>  
Index.jsp

Vamos inserir uma nova pagina jsp [incluir.jsp] onde iremos criar o formulário para inclusão de novos registros.
Obs.: não iremos nos preocupar com a formatação da interface e nem validação das informações neste momento.


 <%@page contentType="text/html" pageEncoding="UTF-8"%>  
 <!DOCTYPE html>  
 <html>  
   <head>  
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
     <title>Inclusão</title>  
   </head>  
   <body>  
     <h1>Inclusão</h1>  
     <form action="svCadastro?cmd=incluir" method="post">  
       <label>Id:</label><input type="number" name="id"><br>  
       <label>Nome:</label><input type="text" name="nome"><br>  
       <label>Disciplina:</label><input type="text" name="disciplina"><br>  
       <label>Nota</label><input type="number" name="nota"><br>  
       <input type="submit" value="Gravar">  
     </form>  
   </body>  
 </html>  
incluir.jsp

Observe que o action do formulário esta apontando para o servlet [svCadastro], nos remos criá-lo em breve, e esta enviando um parâmetro [cmd] com o valor [incluir].

Para organização do nosso código fonte, vamos criar dois pacotes o primeiro será [br.com.treinamento.bd] e [br.com.treinamento.servlets].
No pacote [br.com.treinamento.bd] iremos criar uma nova classe java [ConexaoBD], que realizará a conexão com o banco de dados.
 package br.com.treinamento.bd;  
 import java.sql.Connection;  
 import java.sql.DriverManager;  
 import java.sql.SQLException;  
 /**  
  *  
  * @author Raulivan  
  */  
 public class ConexaoBD {  
   //Metodo que irá realizar a conexão de acordo com o banco de dados solicitado  
   public static Connection Contectar(String banco) throws SQLException, Exception{  
     if(banco.equalsIgnoreCase("SQL"))  
       return ConectarSQLServer();  
     else if(banco.equalsIgnoreCase("MySQL"))  
       return ConectarMySQL();  
     else  
       return null;  
   }  
   //Método que realiza a conexão com o SQL Server  
   private static Connection ConectarSQLServer() throws SQLException, Exception{  
     String banco = "AGENDA";//"NOME_DO_BANCO";  
     String usuario = "sa";//"LOGIN_SQL";  
     String senha = "xxxxxx";//SENHA_SQL";  
     String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";  
     String servidor = "RAULIVANPC\\SQLEXPRESS";;  
     Connection conn;  
     //definição do driver utilizado  
     Class.forName(driver);  
     //inicializa a conexão  
     conn = DriverManager.getConnection("jdbc:sqlserver://" + servidor + ";databaseName=" + banco, usuario, senha);  
     return conn;  
   }  
   //Método que realiza a conexão com MySql  
   private static Connection ConectarMySQL() throws SQLException, ClassNotFoundException {  
       String banco = "AGENDA";//"NOME_DO_BANCO";  
       String usuario = "root";//"LOGIN_SQL";  
       String senha = "xxxxxxx";//SENHA_SQL";  
       String driver = "com.mysql.jdbc.Driver";  
       String servidor = "localhost";  
       Connection conn;  
        //definição do driver utilizado  
       Class.forName(driver);  
        //inicializa a conexão  
       conn = DriverManager.getConnection("jdbc:mysql://" + servidor + ":3306/" + banco, usuario, senha);  
       return conn;  
   }  
 }  
Classe ConexaoBD.java

Vamos criar o servlet que será responsável por inserir e recuperar as informações do banco de dados, para isso vamos considerar que o banco de dados tenha a seguinte estrutura:

  • Nome do banco: Treinamento;
  • Tabela: Alunos;
    • Id inteiro;
    • Nome varchar(80);
    • Disciplina varchar(80);
    • Nota float

No pacote [br.com.treinamento.servlets] vamos criar um novo servlet [svCadastro]. Altere o método [processRequest], conforme o código abaixo.


 protected void processRequest(HttpServletRequest request, HttpServletResponse response)  
       throws ServletException, IOException {  
     //Pega o valor do parametro cmb para descobrir qual operação será realizada  
     String comando = request.getParameter("cmd");  
     if(comando.equalsIgnoreCase("incluir")){  
       try {   
         Connection con=null;  
         Statement stm =null;  
         try {  
           //Cira a conexão  
           con = ConexaoBD.Contectar("MySql");  
           //Cria o statements que executam as sentenças sql no banco  
           stm = con.createStatement();  
         } catch (Exception ex) {  
           Logger.getLogger(svCadastro.class.getName()).log(Level.SEVERE, null, ex);  
         }          
         //monta a sentença sql  
         String query = "insert into alunos(Id,Nome,Disciplina,Nota) values("+  
               request.getParameter("id") + ",'"+   
               request.getParameter("nome") +"','"+  
               request.getParameter("disciplina") +"'," +  
               request.getParameter("nota") +")";   
        //Executa a setença sql no bando de dados    
        stm.executeUpdate(query);   
        //redirencina para a página index.jsp  
        response.sendRedirect("index.jsp");  
      }catch (SQLException e){  
        //Cria uma pagina para exibir o erro  
        PrintWriter out = response.getWriter();  
        out.println("<!DOCTYPE html>");  
        out.println("<html>");  
        out.println("<head>");  
        out.println("<title>Erro</title>");        
        out.println("</head>");  
        out.println("<body>");  
        out.println("<h1>Erro: " + e.getMessage() + "</h1>");  
        out.println("</body>");  
        out.println("</html>");      
        out.close();  
      }   
     }else if(comando.equalsIgnoreCase("alteracao")){  
       try {   
         Connection con=null;  
         Statement stm =null;  
         try {  
           //Cira a conexão  
           con = ConexaoBD.Contectar("MySql");  
           //Cria o statements que executam as sentenças sql no banco  
           stm = con.createStatement();  
         } catch (Exception ex) {  
           Logger.getLogger(svCadastro.class.getName()).log(Level.SEVERE, null, ex);  
         }  
         //monta a sentença sql  
         String query = "update alunos set "+  
               "nome= '" + request.getParameter("nome") +  
               "', disciplina = '" + request.getParameter("disciplina") +  
               "', nota = " + request.getParameter("nota") +  
               " where id = "+ request.getParameter("id");  
        //Executa a setença sql no bando de dados    
        stm.executeUpdate(query);   
        //redirencina para a página index.jsp  
        response.sendRedirect("index.jsp");  
      }catch (SQLException e){  
        //Cria uma pagina para exibir o erro  
        PrintWriter out = response.getWriter();  
        out.println("<!DOCTYPE html>");  
        out.println("<html>");  
        out.println("<head>");  
        out.println("<title>Erro</title>");        
        out.println("</head>");  
        out.println("<body>");  
        out.println("<h1>Erro: " + e.getMessage() + "</h1>");  
        out.println("</body>");  
        out.println("</html>");      
        out.close();  
      }   
     }else if(comando.equalsIgnoreCase("exclusao")){  
       try {   
         Connection con=null;  
         Statement stm =null;  
         try {  
           //Cira a conexão  
           con = ConexaoBD.Contectar("MySql");  
           //Cria o statements que executam as sentenças sql no banco  
           stm = con.createStatement();  
         } catch (Exception ex) {  
           Logger.getLogger(svCadastro.class.getName()).log(Level.SEVERE, null, ex);  
         }  
         //monta a sentença sql  
         String query = "Delete from alunos where id = "+ request.getParameter("id");  
          //Executa a setença sql no bando de dados    
          stm.executeUpdate(query);   
          //redirencina para a página index.jsp  
          response.sendRedirect("index.jsp");  
      }catch (SQLException e){  
        //Cria uma pagina para exibir o erro  
        PrintWriter out = response.getWriter();  
        out.println("<!DOCTYPE html>");  
        out.println("<html>");  
        out.println("<head>");  
        out.println("<title>Erro</title>");        
        out.println("</head>");  
        out.println("<body>");  
        out.println("<h1>Erro: " + e.getMessage() + "</h1>");  
        out.println("</body>");  
        out.println("</html>");      
        out.close();  
      }   
     }  
   }  
Método processRequest do servlet svCadastro.


Agora vamos criar a página [listar.jsp] onde serão listados todos os registro da tabela [alunos]



 <%--   
   Document  : listar  
   Created on : 10/03/2014, 12:55:13  
   Author   : Raulivan  
 --%>  
 <!--Observe os imports dos pacotes necessários para execução da rotina -->  
 <%@page import="br.com.treinamento.bd.ConexaoBD"%>  
 <%@page import="java.sql.Statement"%>  
 <%@page import="java.sql.Connection"%>  
 <%@page import="java.sql.ResultSet"%>  
 <%@page contentType="text/html" pageEncoding="UTF-8"%>  
 <!DOCTYPE html>  
 <html>  
   <head>  
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
     <title>Lista</title>  
   </head>  
   <body>  
     <h1>Lista de Contatos</h1>  
     <!-- Abaixo será gerada uma tabela dinamica, o numero de linhas será de acordo com o numero  
     de registros da tabela alunos-->  
       <table border="0px" width="800px">  
         <!-- Parte fixa da tabela -->  
         <thead>  
           <tr>  
             <th bgcolor="#93AAB2" width="80px">Id</th>    
             <th bgcolor="#93AAB2" width="300px">Nome</th>  
             <th bgcolor="#93AAB2" width="80px">Disciplina</th>  
             <th bgcolor="#93AAB2" width="180px">Nota</th>   
             <th bgcolor="#93AAB2" width="80px"></th>    
             <th bgcolor="#93AAB2" width="80px"></th>   
           </tr>  
         </thead>  
         <!-- O corpo é gerado dinamicamente -->  
         <tbody>  
           <%  
             ResultSet res =null;  
             Connection con;   
             Statement stm;   
             try {   
               con = ConexaoBD.Contectar("MySql");  
               stm = con.createStatement();    
               res = stm.executeQuery("Select * from alunos");   
             }catch(Exception ex){  
               out.write(ex.getMessage());  
             }  
             while(res.next()){%>  
              <tr>  
               <td><%=res.getInt("Id")%></td>  
               <td><%=res.getString("Nome")%></td>  
               <td><%=res.getString("Disciplina")%></td>  
               <td><%=res.getFloat("Nota")%></td>  
               <td>  
                 <!-- Link para alteração enviando o id do registro que será alterado  
                 obs.: esta rotina não será implementada neste post-->  
                 <a href="svCadastro?cmb=alterar?id=<%=res.getInt("Id")%>">Alterar</a>  
               </td>  
               <td>  
                 <!-- Link para alteração enviando o id do registro que será excluído  
                 obs.: esta rotina não será implementada neste post-->  
                 <a href="svCadastro?cmb=exclusao&id=<%=res.getInt("Id")%>">Excluir</a>  
               </td>  
             </tr>  
             <%}%>  
           </tbody>  
       </table>  
   </body>  
 </html>  
listar.jsp

Espero que tenham gostado, dúvidas, reclamações ou sugestões deixe em seu comentário aí em baixo.

Obrigado.