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);
}
}
}
Conexão MySql com o NetBeans
10 Respostas
//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);
}
Fala ai cellodedy, tudo em cima?
Vou te passar a minha classe Conexao.java, sempre uso ela nos meus projetos.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();
}
}
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();
}
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;
}
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;
}
}
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… 
amigo tem como voce me ajudar no meu codigo fonte, não estou conseguindo fazer um update no meu sistema...abraços...
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();
Ceneri,
Está apresentando algum erro ao tentar dar o update?
Oi,
posta o erro aí!
Movido para o fórum de persistência.