Por favor! Ajuda com a conexão

10 respostas
J

Salve galera! Eu sou novo por aki e este é minha primeira dúvida! Já sou programador em outras linguagens, VB, VB.NET, C#, Pascal, Asp.NET, PHP, e agora estou iniciando JAVA com o Netbeans 6.8.
Sei que muitos vão achar idiotice, mas sei que todo mundo não achou isso no inicio, então por favor me ajudem.
[color=red]OBS. Eu pedi com educação para me ajudarem com o Código e não com o Forum de vcs. Peço desculpas, pois eu não tenho tempo de ler as regras dos foruns e deixo para aprender as coisas menos importantes com a prática mesmo.[/color]

A questão é a seguinte:

Estou tentando conectar uma aplicação com o banco de dados MS ACCESS e estou recebendo o seguinte ERRO:

[color=red]"java.sql.SQLException:[Microsoft][ODBCDriveManager]Nome da fonte de dados não encontrado e nenhum drive padrão especificado"[/color]

Eu verifiquei e o nome da fonte de dados está correto.
Bom eu vi neste forum que é preciso criar uma conexão ODBC. Certo , eu criei uma e mesmo assim não funfou.

Queria pedir que alguem me ajudasse nessa primeira fase do meu aprendizado.

Eu tenho que instalar algum drive? Qual? Onde baixo?

Ajudem-me! Abaixo seque os códigos da classe de conexão e do botão de autenticação, que é um exemplo que eu peguei aki no forum.
Eu utilizo o Windows 7 Ultimate, Netbeans 6.8.

/**------------------------------Classe de conexão------------------------------------------*/
import java.sql.*;
import javax.swing.JOptionPane;
public class ClassConecta {
    
    /** Creates a new instance of ClassConecta */
    public ClassConecta() {    }
   
    //função para conexão com Banco    
    
    private String url = "jdbc:odbc:bancojhonn";
    private String driver ="sun.jdbc.odbc.JdbcOdbcDriver";
    private String user ="OK"; 
    private String pwd = "senhajohnn";//Senha do Banco de dados
    Connection con = null;    
     
    public Connection conecta(){
        try{
            Class.forName(driver);
            con = DriverManager.getConnection(url, user,pwd);            
        }catch(ClassNotFoundException e){
            JOptionPane.showMessageDialog(null,"Ocorreu um erro no sistema, se o problema persistir contate o administrador:\n Driver não encontrado!\n"+ e,"ATENÇÃO",JOptionPane.WARNING_MESSAGE);
        }catch(SQLException e){
            JOptionPane.showMessageDialog(null,"Ocorreu um erro no sistema, se o problema persistir contate o administrador:\n Erro na Conexão com Banco\n"+ e,"ATENÇÃO",JOptionPane.WARNING_MESSAGE);            
}
       // System.out.println("Conectado");
        return con;  
    }
    //fim da conexao
    //========================================================
}



//--------------------------Botão de Autenticação---------------------------------------------------

private void btnOkActionPerformed(java.awt.event.ActionEvent evt) {                                      
// TODO add your handling code here:

        ClassAutentica autentica = new ClassAutentica();
        FPrincipal principal = new FPrincipal();     
        autentica.setLogin(txtLogin.getText());
        autentica.setSenha(txtPwd.getText());  
        autentica.setRetornaNivel(1);
        String login = txtLogin.getText();
       
        if(autentica.autentica() == false){
         JOptionPane.showMessageDialog(null,"Login ou Senha Inválidos","ATENÇÃO",JOptionPane.WARNING_MESSAGE);
        }else{
 
            ClassAuditoria audita = new ClassAuditoria();
            audita.setTxt("Usuário: " + login + " Conectou-se");
            audita.incluiAuditoria();
            principal.show();
            this.dispose();
        }
    }       


//Desde já agradeço a todos que puderem me ajudar.

10 Respostas

UMC

Você precisa do drive de conexão.

Cesimar

Eis um exemplo de conexão com um banco de dados MS Access que usei recentemente.

public static Connection conexaoAccess(){
        try {
         //criacao das classes de conexao odbc
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        //base de dados
        String filename = "C:\banco.mdb";
        String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=";
        database+= filename.trim() + ";DriverID=22;READONLY=true}";

        // now we can get the connection from the DriverManager
        return DriverManager.getConnection( database ,"usuario","senha");
        }catch (Exception e) {
            System.out.println("Error: " + e);
        }
        return null;
    }
vinnyparker

moço filho da Sara Connor ( kkk) usa o code quando for colocar seu post aki velho, fica mais arrumadinho

/**------------------------------Classe de conexão------------------------------------------*/
import java.sql.*;
import javax.swing.JOptionPane;
public class ClassConecta {

/** Creates a new instance of ClassConecta */
public ClassConecta() { }

//função para conexão com Banco

private String url = "jdbc:odbc:bancojhonn";
private String driver ="sun.jdbc.odbc.JdbcOdbcDriver";
private String user ="OK";
private String pwd = "senhajohnn";//Senha do Banco de dados
Connection con = null;

public Connection conecta(){
try{
Class.forName(driver);
con = DriverManager.getConnection(url, user,pwd);
}catch(ClassNotFoundException e){
JOptionPane.showMessageDialog(null,"Ocorreu um erro no sistema, se o problema persistir contate o administrador:\n Driver não encontrado!\n"+ e,"ATENÇÃO",JOptionPane.WARNING_MESSAGE);
}catch(SQLException e){
JOptionPane.showMessageDialog(null,"Ocorreu um erro no sistema, se o problema persistir contate o administrador:\n Erro na Conexão com Banco\n"+ e,"ATENÇÃO",JOptionPane.WARNING_MESSAGE);
}
// System.out.println("Conectado");
return con;
}
//fim da conexao
//========================================================
}



//--------------------------Botão de Autenticação---------------------------------------------------

private void btnOkActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:

ClassAutentica autentica = new ClassAutentica();
FPrincipal principal = new FPrincipal();
autentica.setLogin(txtLogin.getText());
autentica.setSenha(txtPwd.getText());
autentica.setRetornaNivel(1);
String login = txtLogin.getText();

if(autentica.autentica() == false){
JOptionPane.showMessageDialog(null,"Login ou Senha Inválidos","ATENÇÃO",JOptionPane.WARNING_MESSAGE);
}else{

ClassAuditoria audita = new ClassAuditoria();
audita.setTxt("Usuário: " + login + " Conectou-se");
audita.incluiAuditoria();
principal.show();
this.dispose();
}
}


//Desde já agradeço a todos que puderem me ajudar.
Cesimar
System.out.println("Deveras Vinny Parker. Fica bem mais legível.");
J

Cesimar se não for pedir muito, posta o teu código de autenticação! O do botão OK que verifica se o usuário e senha estão corretos!

Cesimar

Vc quer que eu coloque de toda aplicação ou somente do botao??

J

Coloca a do botão e se possível da Classe de validação onde tá o Sql tbm.

Eu fiz aki com o teu código e conectou, porém não to conseguindo fazer a validação no banco de dados. Preciso ver como é feita a validação.

Aki eu fiz assim:

public boolean autentica(){ boolean valida = true; try{ conexao.conecta(); Statement stmt = conexao.con.createStatement(); ResultSet rs = stmt.executeQuery("select * from Tabusuario where usuario = '"+ getLogin() +"' and senha = '"+ getSenha() +"'"); while(rs.next()){ setRetornaLogin(rs.getString("usuario")); setRetornaSenha(rs.getString("senha")); setRetornaNivel(1); } if(getretornaLogin() == null && getretornaSenha() == null){ valida = false; } }catch(SQLException e){ JOptionPane.showMessageDialog(null,"Ocorreu um erro no sistema, se o problema persistir contate o administrador:\n"+ e,"ATENÇÃO",JOptionPane.WARNING_MESSAGE); } return valida; }

A OOP só enche por causa disso, é um código dependendo de outro.

Cesimar

Verifica se esse código da certo.

public boolean autentica(String usuario, String senha){ 
        try{
           Connection con = conexao.conecta(); 
            PreparedStatement ps = con.con.prepareStatement("SELECT * FROM Tabusuario WHERE usuario = ? AND senha = ?");
            ps.setString(1, usuario);
            ps.setString(2, senha);
            ResultSet rs = ps.executeQuery();   
            while(rs.next()){
               setRetornaLogin(rs.getString("usuario")); 
               setRetornaSenha(rs.getString("senha"));
               setRetornaNivel(1);
               return gsetRetornaLogin() == null && gsetRetornaSenha() == null ? false : true; 
            } 
             }catch(SQLException e){
                JOptionPane.showMessageDialog(null,"Ocorreu um erro no sistema, se o problema persistir contate o administrador:\n"+ e,"ATENÇÃO",JOptionPane.WARNING_MESSAGE);
           }
        return fase;
    }
Cesimar

Ops! Errei uns códigos. Ver se esse dá certo!

public boolean autentica(String usuario, String senha){ 
        try{
           Connection con = conexao.conecta(); 
            PreparedStatement ps = con.prepareStatement("SELECT * FROM Tabusuario WHERE usuario = ? AND senha = ?");
            ps.setString(1, usuario);
            ps.setString(2, senha);
            ResultSet rs = ps.executeQuery();   
            while(rs.next()){
               setRetornaLogin(rs.getString("usuario")); 
               setRetornaSenha(rs.getString("senha"));
               setRetornaNivel(1);
               return getRetornaLogin() == null && getRetornaSenha() == null ? false : true; 
            } 
             }catch(SQLException e){
                JOptionPane.showMessageDialog(null,"Ocorreu um erro no sistema, se o problema persistir contate o administrador:\n"+ e,"ATENÇÃO",JOptionPane.WARNING_MESSAGE);
           }
        return false;
    }
J

Cesimar:
Ops! Errei uns códigos. Ver se esse dá certo!

public boolean autentica(String usuario, String senha){ 
        try{
           Connection con = conexao.conecta(); 
            PreparedStatement ps = con.prepareStatement("SELECT * FROM Tabusuario WHERE usuario = ? AND senha = ?");
            ps.setString(1, usuario);
            ps.setString(2, senha);
            ResultSet rs = ps.executeQuery();   
            while(rs.next()){
               setRetornaLogin(rs.getString("usuario")); 
               setRetornaSenha(rs.getString("senha"));
               setRetornaNivel(1);
               return getRetornaLogin() == null && getRetornaSenha() == null ? false : true; 
            } 
             }catch(SQLException e){
                JOptionPane.showMessageDialog(null,"Ocorreu um erro no sistema, se o problema persistir contate o administrador:\n"+ e,"ATENÇÃO",JOptionPane.WARNING_MESSAGE);
           }
        return false;
    }

Velho teu código não deu erro algum, só que ñ acontece nada, nada mesmo! O formulário principal que é pra ser carregado na validação, não abre. Então eu vou postar o código da saída.

compile: run: Exception in thread "AWT-EventQueue-0" java.lang.NoSuchMethodError: ClassAutentica.autentica()Z at FAutenticacao.btnOkActionPerformed(FAutenticacao.java:134) at FAutenticacao.access$100(FAutenticacao.java:13) at FAutenticacao$2.actionPerformed(FAutenticacao.java:88) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2012) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2335) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:253) at java.awt.Component.processMouseEvent(Component.java:6218) at javax.swing.JComponent.processMouseEvent(JComponent.java:3294) at java.awt.Component.processEvent(Component.java:5983) at java.awt.Container.processEvent(Container.java:2046) at java.awt.Component.dispatchEventImpl(Component.java:4578) at java.awt.Container.dispatchEventImpl(Container.java:2104) at java.awt.Component.dispatchEvent(Component.java:4404) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4565) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4228) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4158) at java.awt.Container.dispatchEventImpl(Container.java:2090) at java.awt.Window.dispatchEventImpl(Window.java:2559) at java.awt.Component.dispatchEvent(Component.java:4404) at java.awt.EventQueue.dispatchEvent(EventQueue.java:605) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:286) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:191) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:186) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:178) at java.awt.EventDispatchThread.run(EventDispatchThread.java:139)

Vou ficar tentando aki, o inicio é assim msm.

Criado 24 de abril de 2011
Ultima resposta 26 de abr. de 2011
Respostas 10
Participantes 4