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.
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;
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);
}
…
}
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;
}
}
…
}
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.
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.