Não conecta ao banco

6 respostas
C

Minha classe não está conectando ao banco, pq?

import java.util.List;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import java.util.StringTokenizer;
import java.awt.*;

public class AGUtil {
	
	private BancoD aplicacao;
	private String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
    private String url = "jdbc:odbc:Conexao";
    private String login = "";
    private String senha = "";
  
    public void crossover(Cromossomo cromossomo) {
        String conteudo[][] = cromossomo.getConteudo();
        
        for(int x = 0; x < 2; x++) {
            int i = AGUtil.getRandomInt(Cromossomo.LINHAS);
            int j = AGUtil.getRandomInt(Cromossomo.COLUNAS);
            //int h = AGUtil.getRandomInt(Cromossomo.LINHAS);
            int v = AGUtil.getRandomInt(Cromossomo.COLUNAS);
            
            String temp = conteudo[i][j];
            conteudo[i][j] = conteudo[i][v];
            conteudo[i][v] = temp;
        }
        
        cromossomo.setConteudo(conteudo);
    }
    
    public void mutarCromossomo(Cromossomo cromossomo) {
        String conteudo[][] = cromossomo.getConteudo();
        int i = AGUtil.getRandomInt(Cromossomo.LINHAS);
        int j = AGUtil.getRandomInt(Cromossomo.COLUNAS);
        
        while(conteudo[i][j] == Cromossomo.VAZIO) {
            i = AGUtil.getRandomInt(Cromossomo.LINHAS);
            j = AGUtil.getRandomInt(Cromossomo.COLUNAS);
        }
        
        String temp = conteudo[i][j];
        conteudo[i][j] = Cromossomo.VAZIO;
        
        i = AGUtil.getRandomInt(Cromossomo.LINHAS);
        j = AGUtil.getRandomInt(Cromossomo.COLUNAS);
        
        while(conteudo[i][j] != Cromossomo.VAZIO) {
            i = AGUtil.getRandomInt(Cromossomo.LINHAS);
            j = AGUtil.getRandomInt(Cromossomo.COLUNAS);
        }
        
        conteudo[i][j] = temp;
        cromossomo.setConteudo(conteudo);
    }
    
    public void calcularAptidao() {
    	   aplicacao.setConectar(driver, url, login, senha);
	   String c = aplicacao.listarDisponibilidade(3);
		System.out.println(c);
}
}

classe que trata conexões do banco:

import javax.swing.*;
import java.sql.*;
import javax.swing.table.DefaultTableModel;
public class BancoD
{
   private Connection can;
   private void conectar(String driver, String url, String login, String senha)
   {
       try
       {
           Class.forName(driver);
           System.out.println("DRIVER CARREGADO");
           this.can=DriverManager.getConnection(url, login,senha);
       }
        catch (Exception e)
        {
            System.out.println("Erro!");
        }
    }
public String listarDisponibilidade(int coluna)
    {
    	String cod = null;
        try
        {
            String sql = "select Professores.Turno, Disponibilidade.CodDisciplina, Professores.Nome  from Professores inner join Disponibilidade on Professores.CodProfessor = Disponibilidade.CodProfessor where Disponibilidade.Coluna"+Integer.toString(coluna)+" = 1"; 
            Statement s = this.can.createStatement(); 
            ResultSet rs = s.executeQuery(sql); 
            int aux1, aux2;
            String a1, a2,a3;
            String saida = "";
            while(rs.next())
            {
            	aux1 = rs.getInt(1);
            	aux2 = rs.getInt(2);
                a1 = Integer.toString(aux1);
                a2 = Integer.toString(aux2);
                a3 = rs.getString(3);
                cod +="\n"+ a1+a2+"-"+a3; 
                //System.out.println(cod);
               // rs.close();
                //s.close();
            }
        }
        catch(Exception e)
        {
            System.out.println("Erro listarDissponibilidade: " + e);
        }
        return cod.substring(4, cod.length());
    }

    public void setConectar(String driver, String url, String login, String senha)
    {
        conectar(driver, url,login,senha);
    }
}

classe q chama o método calcularAptidao da classe AGUtil:

import javax.swing.JOptionPane;
public class Timetabling extends javax.swing.JFrame {
    
    public Timetabling() {
        initComponents();
    }
    
    private void initComponents() {
    	modelo = null;
    	cromo = new Cromossomo();
    	util = new AGUtil();
    	aplicacao = new BancoD();
    	grupo = new javax.swing.ButtonGroup();
        jTabbedPane1 = new javax.swing.JTabbedPane();
        jPanel1 = new javax.swing.JPanel();
        jPanel5 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        tfNomeCurso = new javax.swing.JTextField();
        .
        .
        .
     aplicacao.setConectar(driver, url, login, senha);
        .
        .
        .
     private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
      util.calcularAptidao();
     }
       .
       .
       . 
}

6 Respostas

Jair_Rillo_Junior

Não sei, sem mostrar a exception que ocorre fica dificil de ajudar.
Alias, a grande maioria dos erros sobre JDBC já foram discutidos aqui no GUJ. Procure no fórum pelo seu erro e também dê uma pesquisada no google. Em último caso, ai sim coloque um novo post no fórum

C

O ERRO:

Exception in thread AWT-EventQueue-0 java.lang.NullPointerException

at AGUtil.calcularAptidao(AGUtil.java:59)

at Timetabling.jButton3ActionPerformed(Timetabling.java:1123)

at Timetabling.access$100(Timetabling.java:2)

at Timetabling$2.actionPerformed(Timetabling.java:250)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)

at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)

at java.awt.Component.processMouseEvent(Component.java:6038)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)

at java.awt.Component.processEvent(Component.java:5803)

at java.awt.Container.processEvent(Container.java:2058)

at java.awt.Component.dispatchEventImpl(Component.java:4410)

at java.awt.Container.dispatchEventImpl(Container.java:2116)

at java.awt.Component.dispatchEvent(Component.java:4240)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)

at java.awt.Container.dispatchEventImpl(Container.java:2102)

at java.awt.Window.dispatchEventImpl(Window.java:2429)

at java.awt.Component.dispatchEvent(Component.java:4240)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
marciofermino

AMIGO,

ACHO QUE VC DEVERIA COLOCAR PONTOS PARA DEBUGAR… E VEJA SE ADICIONOU O DRIVER DO BANCO NO SEU PROJETO

C

coloquei o driver sim, ta dando erro no método calcaularAptidão da primeira Classe AGUtil!!!

_Renatu

a exceção diz NullPointerException na linha 59, no metodo calcularAptidao.

Muito provavelmente o atributo aplicacao é nulo. Isto tem a ver com o banco de dados?

voce criou o atributo, mas nao atribuiu nenhum valor a ele.

fabim

Você declarou a referência, mas nao atribuiu nada à ela.

Substitua a linha:

private BancoD aplicacao;

por:

private BancoD aplicacao = new BancoD();
Criado 23 de novembro de 2007
Ultima resposta 23 de nov. de 2007
Respostas 6
Participantes 5