Conexão MySql com o NetBeans

Olha estou desenvolvendo um aplicativo com o NetBeans para desktop.
Estou utilizando o banco de dados access, para testes pois não sei como faço para conectar com o mysql 5.0,
Alguêm poderia me ajudar?
Aqui estão as minha classe de conexão:

[code]package utilitarios; //estou informando onde a conexao vai ficar armazenado no pagote utilitarios
import java.sql.; //. importa todas as bibliotecas do java
import javax.swing.*;
import javax.xml.transform.Result;

public class conexao //classe conexao tem que ser o mesmo nome class conexao
{
//criei uma variavel driver tipo string e constatnte o conteudo desta variavel não poder ser alterado
final private String driver = “sun.jdbc.odbc.JdbcOdbcDriver”; //conexao com o banco de dados access
final private String url = “jdbc:odbc:controle”; //chamando o banco de dados “controle” esta armazenando a fonte de dados
final private String usuario = “”;
final private String senha = “”;
private Connection conexao; //responsavel pela conexão do banco de dados
public Statement statement; //abre caminho ate o banco e uma alto estrada
public ResultSet resultset; // armazena o resultado no dados no banco

public boolean conecta() //metodo conecta servi para todas as tabelas e cadastros tipo boolean retorna um valor
{
    // try e catch = ele tenta efetua alguma coisa caso não consiga ele vai para o catch tratamento de erro
    // no java se vc não tratar erro ele nem conecta com o banco
    boolean result = true; //variavel do tipo boolean inicia com true
    try
    { 
        Class.forName(driver); //carregar o driver
        conexao = DriverManager.getConnection(url, usuario, senha); //efetuar a conexao propriamente dita
        //JOptionPane.showMessageDialog(null, "Conectou");
    }
    catch (ClassNotFoundException Driver) //catch tratamento de erro vou tratar o erro
    {
        JOptionPane.showMessageDialog(null, "Driver não localizado: "+Driver); //variavel driver que eu criei vai mostrar o erro pelo catch
        result = false;
    }
    catch (SQLException fonte) //tratamente de erro com a conexao do banco de dados e minha fonte
    {
        JOptionPane.showMessageDialog(null,"Deu erro na conexão "+ 
                "com a fonte de dados"+fonte);//variavel fonte vai mostrar para mim o erro tratamento de erro
        result = false;
    }
    return result; //retonando true ele da sequencia caso false ele para
}

//do tipo void nulo não retorna nenhum valor 
public void desconecta() //metodo de desconectar o banco pois o banco não pode ficar sempre conectado
{
    //o java não permite ligação com banco de dados sem usar o try catch 
    //vc tem que usar o tratamento de erro com o java senão não funciona nada
    boolean result = true;
    try
    {
        conexao.close();
        JOptionPane.showMessageDialog(null, "Banco Fechado");
    }
    catch(SQLException fecha)
    {
        JOptionPane.showMessageDialog(null,"Não foi possível "+
                "Fechar o banco de dados"+fecha);
        result = false;
    }
}

//no momento que eu passar esse parametro na tabela setor qual o sql que eu quero executar
public void executeSQL(String sql)//metodo para executar o banco de dados por parametro
{
    try
    {
        statement = conexao.createStatement(
                    ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);            

//dois parametro que nos permite navegar por ele
// 1 ResultSet.TYPE_SCROLL_SENSITIVE me permite que eu passo navegar para ambos os lados para frente para traz
//2 ResultSet.CONCUR_READ_ONLY me permite que eu possa navegar
//statement abre o caminho como uma alto estrada
resultset = statement.executeQuery(sql); //aqui estou pegando o sql que esta sendo passado por parametro
//resultset pega a alto estrada e sera executavel
}
//caso de alguma problema ele vai para o tratamento de erro
catch (SQLException sqlex)
{
JOptionPane.showMessageDialog(null,“Não foi possível “+
“executar o comando SQL”+sqlex+”, o sql passado foi”+sql);
}
}
}[/code]

Na parte dos insert * from, Update, Delete muda algo de um banco para o outro
Exemplo que esou usando com o access:

[code] //código para Gravar os dados no Banco de Dados
try
{
//insert int setor (nome,uf) values (‘Carazinho’,‘RS’) exemplo de outros bancos

        //para inserir no banco de dados com o java tem que ter o try catch
        // criei uma variavel String sql insert para inserir nos campos abaixo
        String sqlinsert ="insert into setor (nome,talhoes,tipo,ha,data,apelido) values ('"+
                tf_nome.getText()+"','"+
                tf_talhoes.getText()+"','"+
                cb_tipo.getSelectedItem()+"','"+
                tf_ha.getText()+"','"+
                tf_data.getText()+"','"+
                tf_apelido.getText()+"')";
        con_setor.statement.executeUpdate(sqlinsert);
        JOptionPane.showMessageDialog(null,"Gravação realizado com sucesso!");
        
        //atualiza o ResultSet
        //con_setor.resultset = con_setor.statement.executeQuery("Select * from setor");
        con_setor.executeSQL("select * from setor  order by "+ordenacao);
        atualiza_combo_box_setor();
        con_setor.resultset.first(); //posiciona no primeiro registro
        mostrar_dados(); //irá chamar a função em que irá mstrar os dados no form
    }
    catch (SQLException erro)
    {
        JOptionPane.showMessageDialog(null,"Erro ao tentar Gravar o registro..."+erro);
    }

try
{
String sql = "select * from setor Where codigo = "+tf_codigo.getText();
con_setor.executeSQL(sql);
con_setor.resultset.first();
String nome = “Deseja deletar o setor : “+con_setor.resultset.getString(“nome”)+” ?”;
int opcao_escolhida = JOptionPane.showConfirmDialog(null,nome,"Exclusão ",JOptionPane.YES_NO_OPTION);
if (opcao_escolhida == JOptionPane.YES_OPTION)
{
sql = “DELETE FROM setor Where codigo =”+tf_codigo.getText();
int conseguiu_excluir = con_setor.statement.executeUpdate(sql);
if (conseguiu_excluir == 1)
{
JOptionPane.showMessageDialog(null,“Exclusão realizada com sucesso”);
//atualiza o ResultSet
con_setor.executeSQL("Select * from setor order by "+ordenacao);
atualiza_combo_box_setor();
con_setor.resultset.first(); //posiciona no primeiro registro
mostrar_dados(); //irá chamar a função em que irá mstrar os dados no form
}
}
else
return;
}
catch (SQLException erro)
{
JOptionPane.showMessageDialog(null,“Erro ao tentar excluir o registro…”+erro);
}

//código para Alterar os dados no Banco de Dados
try
{
//variavel do tipo String sql vou fazer um update no banco de dados

        String sql ="UPDATE setor SET nome ='"+tf_nome.getText()+"',"+
                "talhoes = '"+tf_talhoes.getText()+"',"+
                "tipo = '"+cb_tipo.getSelectedItem()+"',"+
                "ha = '"+tf_ha.getText()+"',"+
                "data = '"+tf_data.getText()+"',"+
                "apelido = '"+tf_apelido.getText()+"' where codigo = "+tf_codigo.getText();
        con_setor.statement.executeUpdate(sql);
        //abri caminho ate o banco e estou atualizando os dados
        JOptionPane.showMessageDialog(null,"Alteração realizado com sucesso!");
        
        //se eu deletei ou atualizaei eu sempre tenho que atualizar o resultset 
        //atualiza o ResultSet
        con_setor.executeSQL("Select * from setor  order by "+ordenacao);
        atualiza_combo_box_setor();
        con_setor.resultset.first(); //posiciona no primeiro registro
        mostrar_dados(); //irá chamar a função em que irá mstrar os dados no form
    }
    catch (SQLException erro)
    {
        JOptionPane.showMessageDialog(null,"Erro ao tentar Alterar o registro..."+erro);
    }

[/code]

Fala ai cellodedy, tudo em cima?

Vou te passar a minha classe Conexao.java, sempre uso ela nos meus projetos.

[code]package com.washingtonbotelho.util;

import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import javax.swing.JOptionPane;

final public class Conexao {

private static Conexao conexao = null;
private static Connection conn;
private String caminho, sep = File.separator;

private Conexao() {
caminho = “data” + sep + “Banco.mdb”; // Caminho onde se encontra meu banco, neste caso estará dentro de uma pasta chamada data no mesmo diretório que o meu jar.

try {
  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
  conn = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" + caminho + "", "", ""); // Código direto para não precisar de configurar a ponte ODBC no Windows, assim é só rodar que já estará conectado.
} catch (Exception e) {
  System.out.println("[Conexao.conectar] Erro: " + e.toString());
  System.exit(0);
}

}

public synchronized static Connection getConn() {
if (conexao == null) {
conexao = new Conexao();
}
return conn;
}

public static void desconectar() throws SQLException {
conn.close();
}
}[/code]
Quanto ao SQL, de preferência para o PreperadStatement, pois este já é um código pré compilado e será muito mais rápido, sem contar que ele é mais limpo pra entender. ;D

[code]
public void inserir(Object obj) throws SQLException {
funcionario = (FuncionarioBean) obj;

ps = conn.prepareStatement(
        "INSERT INTO Funcionario (id, nome, cargo, setor, entrada, inicioAlmoco, " +
        "fimAlmoco, saida, obs, pontos, dataPonto) " +
        "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); // Cada interrogação aqui corresponde a um número abaixo.

ps.setInt(1, funcionario.getId());
ps.setString(2, funcionario.getNome());
ps.setString(3, funcionario.getCargo());
ps.setString(4, funcionario.getSetor());
ps.setTime(5, funcionario.getEntrada());
ps.setTime(6, funcionario.getInicioAlmoco());
ps.setTime(7, funcionario.getFimAlmoco());
ps.setTime(8, funcionario.getSaida());
ps.setString(9, funcionario.getObs());
ps.setInt(10, funcionario.getPontos());
ps.setDate(11, funcionario.getDataPonto());
ps.executeUpdate();
ps.close();

}[/code]

[code]public FuncionarioBean consultar(Object obj) throws SQLException {
ps = conn.prepareStatement(“SELECT * FROM Funcionario WHERE id = ?”);
ps.setInt(1, (Integer) obj);

rs = ps.executeQuery();

funcionario = null;

if (rs.next()) {
  funcionario = new FuncionarioBean(
          rs.getInt("codFunc"), rs.getInt("id"), rs.getString("nome"),
          rs.getString("cargo"), rs.getString("setor"), rs.getTime("entrada"),
          rs.getTime("inicioAlmoco"), rs.getTime("fimAlmoco"),
          rs.getTime("saida"), rs.getString("obs"), rs.getInt("pontos"), rs.getDate("dataPonto"));
}

return funcionario;

}[/code]

Para conectar no MySQL é simples também, só muda o nome do driver. =D

[code]package com.washingtonbotelho.util;

import java.sql.Connection;
import java.sql.DriverManager;

final public class Conexao {

private static Connection conn = null;
private static Conexao conexao = null;

private Conexao() {
try {
Class.forName(“com.mysql.jdbc.Driver”);
conn = DriverManager.getConnection(“jdbc:mysql://localhost/NOMEBANCO”, “USUARIO”, “SENHA”); // Por exemplo: livraria, “root”, “” (sem senha).
} catch (Exception e) {
System.out.println("[Conexao.Conexao] Erro: " + e.toString());
}
}

public static synchronized Connection getConnection() {
if (conexao == null) {
conexao = new Conexao();
}
return conn;
}
}[/code]

E de quebra você estará usando SINGLETON que é conectar apenas uma vez no banco, caso já tenha a conexão feita ele retorna esta e não fica conectando toda vez.

Espero que te ajude, pois no início passei pelos mesmos processos. :wink:

E ai WashingtonBotelho BLZ?

Bom em relação a conexão:
esta mesma conexão serve para desktop, pois vc me passou o localhost, que e pra web certo?

da na mesma, pra web ou desktop?

Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection("jdbc:mysql://localhost/NOMEBANCO", "USUARIO", "SENHA"); // Por exemplo: livraria, "root", "" (sem senha).

Tem o localhost se for pra desktop eu devo remover o localhost ou não minha aplicação e para desktop.

Valeww pela ajuda…Obrigado, T+

Bom no access eu tive que instalar o driver, no mysql eu tbm vou ter que fazer a mesma coisa?

Kara como eu estou perdido nestas conexão…

Minha aplicação esta funcionando 100% so falata a conexão com o banco que eu estou me matando!!!

É o seguinte.

Quando usamos o MySQL temos de passar um endereço, como se fosse uma url mesmo, mas no caso é um IP, onde localhost se refere ao IP 127.0.0.1 log uso:

Se for um arquivo do Access temos de usar uma ponte ODBC-JDBC que é uma referência que o própio Windows faz, então usamos a API do Windows e não o IP que seria:

Este código do Access é um código direto para não precisar configurar a ponte ODBC lá em Windows/System32/odbcad32.exe dar um nome e referenciar o nome assim:

Qualquer dúvida estamos ai… :wink:

amigo tem como voce me ajudar no meu codigo fonte, não estou conseguindo fazer um update no meu sistema…abraços…

[code]try{
Class.forName(“com.mysql.jdbc.Driver”);
Connection con;
con = DriverManager.getConnection(“jdbc:mysql://localhost:3306/fabrica”,
“root”, “”);
Statement sta = con.createStatement();
if (true){
String comandoSQL =“UPDATE fabrica SET data_chegada =’”+txt_chegada_material.getText()+"’,"+
“km_chegada = '”+txt_km_chegada.getText()+"’,"+
“resultada = '”+txt_resultado.getText()+"’,"+
“hora_chegada = '”+txt_km_chegada.getText()+"’,"+
"’ where data_chegada = "+txt_chegada_material.getText();

      sta.executeUpdate(comandoSQL);

JOptionPane.showMessageDialog(null,“Alteração realizado com sucesso!”);
JOptionPane.showMessageDialog(null,“Dados Gravados com Sucesso”,“Atenção”,
JOptionPane.INFORMATION_MESSAGE);

     }


    }

catch(Exception erro){
JOptionPane.showMessageDialog(null,“CÓDIGO JA CADASTRADO!”,“Atenção”,
JOptionPane.INFORMATION_MESSAGE);
txt_numero_gerado.requestFocus();[/code]

Ceneri,

Está apresentando algum erro ao tentar dar o update?

aqui está uma coisa que vai te ajudar e muito

Oi,

posta o erro aí!

Movido para o fórum de persistência.