Pessoal, atendendo a pedidos neste artigos veremos como fazer a conexão entre Java e o MySQL utilizando o “MySQL Connector/J” que é o driver JDBC do MySQL. O Connector/J é um driver JDBC do tipo IV e contém todas as características de JDBC para utilizar MySQL. Antes de mais nada acesse o site do MySQL (www.mysql.com) e baixe o driver. Como temos vários artigos sobre instalação e configuração do MySQL no site e na revista SQL Magazine vamos fugir desta parte e ir direto ao assunto da conexão do Java com o MySQL. Para demonstrar a utilização do driver criei um projeto de cadastro e consultas de clientes usando o Netbeans, caso você se interesse me escreva que enviarei o projeto por e-mail.

Criando o projeto

Crie um novo projeto no Netbeans chamado MySQLJDBC em seguida insira no projeto o driver JDBC (Connector/J), para fazer isso você deve selecionar a pasta Libraries e clicar com o botão direito selecionando a opção Add JAR/Folder, localize o arquivo baixado do site (mysql-connector-java-5.0.4-bin.jar) e selecione-o (veja na Figura 1 o resultado). Agora que você inseriu no seu projeto o arquivo do driver JDBC já podemos obter acesso ao MySQL.

Adicionando o driver JDBC ao projeto
Figura 1. Adicionando o driver JDBC ao projeto

Agora insira no projeto dois formulários (Figuras 2 e 3), estes formulários serão utilizados para conectar-se ao MySQL e fazer manutenção no cadastro de clientes, veja abaixo a descrição de cada um deles:

  • Formulário MySQLJDBC: Este é o formulário principal apresentado ao usuário, no menu temos as opções Cadastro de Clientes e Conectar ao MySQL, a opção Conectar ao MySQLexibirá os campos para o usuário digitar seus dados para acesso ao banco de dados, a opção Cadastro de Clientes permite ao usuário efetuar manutenção no cadastro de clientes, esta opção só ficará disponível após o usuário conectar-se ao MySQL;
  • Formulário frmIncConsExccliente: Este é formulário onde o usuário poderá incluir, consultar ou excluir clientes. Este formulário só poderá ser carregado após o usuário ter efetuado a conexão com o banco de dados. A opção a ser executada (Inclusão, Consulta ou Exclusão) é recebida dinamicamente de acordo com a opção selecionada pelo usuário no menu principal contido no formulário MySQLJDBC;
O formulário MySQLJDBC
Figura 2. O formulário MySQLJDBC
O formulário frmInclusao
Figura 3. O formulário frmInclusao

Código fonte

Vamos agora ver as principais partes do código fonte do nosso projeto, apresentaremos o código dos dois formulários da aplicação.


import java.sql.*;
import javax.swing.*;

public class MySQLJDBC extends javax.swing.JFrame {
   
    Connection con; /* Mantem a conexão com o banco de dados MySQL */
    
    public MySQLJDBC() {
       initComponents();
       pnlConexao.setVisible(false);
       this.setLocationRelativeTo(null);
   }
   /* Método: btnOKActionPerformed – Este é o metodo 
        executado pelo botão OK após o usuário
        Ter informados seus dados como usuário e senha
   */
   private void btnOKActionPerformed(java.awt.event.ActionEvent evt) {
       String strCnn, strUser, strServer, strDB, strPass;
       strUser = txtUsuario.getText();
       strPass = new String(txtSenha.getPassword());
       strServer = txtServidor.getText();
       strDB = txtBanco.getText();
        
/* Aqui é montada a string de conexão com o MySQL, 
   perceba que neste caso o MySQL Está rodando na porta 
   3307 portanto a necessidade de incluir o número da porta na string de conexão */

       strCnn = "jdbc:mysql://" + strServer + ":3307/" + strDB;
       try {
            /* Aqui registamos a classe do driver JDBC */
           Class.forName("com.mysql.jdbc.Driver");
       }
       catch(Exception e) {
           JOptionPane.showMessageDialog(null,"Nao foi possivel carregar o driver do MySQL");
           return;
       }
       try {
           /* Aqui abrimos a conexão com o MySQL */ 
           con = DriverManager.getConnection(strCnn,strUser,strPass);
       }
       catch(SQLException sqle) {
           JOptionPane.showMessageDialog(null,"Nao foi possivel conectar ao banco");
           return;
       }
       JOptionPane.showMessageDialog(null,"Conexao efetuada com sucesso");
       this.mnuConectar.setEnabled(true);
       this.mnuPrincipal.setEnabled(true);
       this.pnlConexao.setVisible(false);          
   }                                     
   /* Consulta clientes */
   private void mniConsultarActionPerformed(java.awt.event.ActionEvent evt) {
         if(con == null) {
            JOptionPane.showMessageDialog(null,"Voce ainda nao se conectou ao MySQL");
            return;          
         } 
         new frmIncConsExcCliente(2,con).setVisible(true);
   }                                            
   /* Inclusão de clientes */
   private void mniIncluirActionPerformed(java.awt.event.ActionEvent evt) {
       if(con == null) {
          JOptionPane.showMessageDialog(null,"Voce ainda nao se conectou ao MySQL");
          return;
       } 
       new frmIncConsExcCliente(1,con).setVisible(true);
   }                                          
   /* Exclusão de clientes */
   private void mniExcluirActionPerformed(java.awt.event.ActionEvent evt) {
       if(con == null) {
          JOptionPane.showMessageDialog(null,"Voce ainda nao se conectou ao MySQL");
          return;
       }  
       new frmIncConsExcCliente(3,con).setVisible(true);
   }                                          
    …
}
Listagem 1. Principais partes do formulário MySQLJDBC

import java.sql.*;
import javax.swing.*;

class frmIncConsExcCliente extends javax.swing.JFrame {
   
   private int CodigoOP;
   Statement stmt;
   ResultSet rs;
   Connection con;
   
   public frmIncConsExcCliente(int OP, Connection cn) {
       CodigoOP = OP;
       con = cn;
       initComponents();
       this.setLocationRelativeTo(null);
       if(CodigoOP == 1) {
           btnAcao.setText("Incluir");
       }
       if(CodigoOP == 2) {
           this.setTitle("Consulta clientes");
           btnAcao.setText("Proximo");
           this.txtCodigo.setEditable(false);
           this.txtNome.setEditable(false);
           this.txtEndereco.setEditable(false);
           this.txtCidade.setEditable(false);
           this.txtUF.setEditable(false);
           try {
               stmt = con.createStatement();
               rs = stmt.executeQuery("SELECT * FROM tblCliente");
               if(rs.next()) {
                  this.txtCodigo.setText(rs.getString(1));
                  this.txtNome.setText(rs.getString(2));
                  this.txtEndereco.setText(rs.getString(3));
                  this.txtCidade.setText(rs.getString(4));
                  this.txtUF.setText(rs.getString(5));
               }
           }
           catch(SQLException sqle) {
               JOptionPane.showMessageDialog
                (null,"Nao foi possivel obter os registros da tabela");
               return;
           }
       }
       if(CodigoOP == 3) {
           this.setTitle("Exclusão de clientes");
           btnAcao.setText("Excluir");
           btnAcao.setEnabled(false);
           txtCidade.setEditable(false);
           txtEndereco.setEditable(false);
           txtNome.setEditable(false);
       }
   }
   private void btnAcaoActionPerformed(java.awt.event.ActionEvent evt) {
        if(CodigoOP == 2 ) {  
           try {
               if(rs.next()) {
                  this.txtCodigo.setText(rs.getString(1));
                  this.txtNome.setText(rs.getString(2));
                  this.txtEndereco.setText(rs.getString(3));
                  this.txtCidade.setText(rs.getString(4));
                  this.txtUF.setText(rs.getString(5));
               }
               else {
                  JOptionPane.showMessageDialog(null,"Nao existem mais registros");
                  return;
               }
           }
           catch(SQLException sqle) {
               JOptionPane.showMessageDialog(null,"Nao foi possivel ler registros da tabela");
               return;
           }
        }
        if(CodigoOP == 1) {
            String strSQL = new String("");
            strSQL = "INSERT INTO tblCliente VALUES(" +
                     this.txtCodigo.getText() + ",'" +
                     this.txtNome.getText() + "','" +
                     this.txtEndereco.getText() + "','" +
                     this.txtCidade.getText() + "','" +
                     this.txtUF.getText() + "')";
            try {
               stmt = con.createStatement();
               stmt.execute(strSQL);
            }
            catch(SQLException sqlei) {
               JOptionPane.showMessageDialog(null,"Nao foi possivel incluir registro");
               return;
            }
            JOptionPane.showMessageDialog(null,"Registro OK");
            this.txtCodigo.setText("");
            this.txtCidade.setText("");
            this.txtNome.setText("");
            this.txtEndereco.setText("");
            this.txtCidade.setText("");
            this.txtUF.setText("");
            this.txtCodigo.requestFocus();        
        }
   }                                       

   private void txtCodigoActionPerformed(java.awt.event.ActionEvent evt) {
        if(CodigoOP != 2) {
            return;
        }  
        try {
           stmt = con.createStatement();
           rs = stmt.executeQuery("SELECT * FROM tblCliente WHERE " +
                "CodCliente = " + txtCodigo.getText());
           if(!rs.next()) {
              JOptionPane.showMessageDialog(null,"Registro não localizado");
              return;
           }
           txtNome.setText(rs.getString(2));
           txtEndereco.setText(rs.getString(3));
           txtCidade.setText(rs.getString(4));
           txtUF.setText(rs.getString(5));
           btnAcao.setEnabled(true);
           btnAcao.requestFocus();
           txtCodigo.setEditable(false);
        }
        catch(SQLException sqlee) {
            JOptionPane.showMessageDialog(null,"Nao foi possivel obter registro");
            return;
        }
   }                                         
    …           
}
Listagem 2 Principais partes do código do formulário frmInclusao

Resultados

Veremos agora o resultado do nosso projetos, vamos executar os formulários e visualizar o resultado, veja abaixo nas Figuras 4, 5 e 6.

O formulário MySQLJBC, formulário principal
Figura 4. O formulário MySQLJBC, formulário principal
Conectando-se ao MySQL
Figura 5. Conectando-se ao MySQL
Consultando o cadastro de clientes
Figura 6. Consultando o cadastro de clientes

Neste artigo aprendemos como fazer a conexão entre Java e MySQL usando o driver JDBC Connector/J, o qual permite desenvolver aplicações em Java usando o banco de dados MySQL. Trata-se de um recurso muito poderoso pois ambos rodam em praticamente todas as plataformas, desenvolvendo soluções em Java com MySQL você jamais ficará preso a plataforma nenhuma. Espero que as informações contidas no artigo sejam úteis. Caso queira receber o projeto completo envie-me um e-mail e te enviarei o projeto em Netbeans.