Erro na conexÂo

3 respostas
C
Tá dando esse erro: java.lang.NullPointerException. Será q o banco access não ta suportando tantas consultas ao banco?? Me deêm alguma idéia pra que seja feita só uma consulta nesse banco, pq é necessario criar varias vezes uma variavel do tipo desta classe Cromossomo.
import java.util.Vector;
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 Vector listarTurma()
    {
        Vector dados = new Vector();
        try
        {
            String sql = "select CodTurma, Disciplina, Turno, Carga from Turma ORDER BY CodTurma"; 
            Statement s = this.can.createStatement(); 
            ResultSet rs = s.executeQuery(sql); 
            String x = ""; String y =""; 
            while(rs.next())
            {
                int[] alelo = new int[3]; 
                alelo[0] = rs.getInt(1); 
                x = ""+rs.getInt(2);
                y = ""+rs.getInt(3);
                alelo[1] = Integer.parseInt(x+y);
                alelo[2] = rs.getInt(4); 
                dados.add(alelo); 
              }
           }
        catch(Exception e)
        {
            e.printStackTrace();
            System.out.println("Erro listarTurma: " + e);
        }
        return dados;
    }
    
    public Vector listarProf()
    {
        Vector dados = new Vector();
        try
        {
            String sql = "select CodProfessor, CodDisciplina from Professores ORDER BY CodProfessor"; 
            Statement s = this.can.createStatement(); 
            ResultSet rs = s.executeQuery(sql); 
            while(rs.next())
            {
                int[] alelo = new int[2]; 
                alelo[0] = rs.getInt(1); 
                alelo[1] = rs.getInt(2);
                dados.add(alelo); 
              }
           }
        catch(Exception e)
        {
            System.out.println("Erro listarProfessor: " + e);
        }
        return dados;
    }
    public void setConectar(String driver, String url, String login, String senha)
    {
        conectar(driver, url,login,senha);
    }
}
public Cromossomo() {
        cromo = new Vector();
        Vector cromo2 = new Vector();
        Vector aux = new Vector();
        Vector V = new Vector();
        Vector P = new Vector();
        aplicacao.setConectar(driver, url, login, senha);
        V = aplicacao.listarTurma(); 
        P = aplicacao.listarProf();
        int linha = 0;
        int conteudo[][]=new int[2][25];
        int dado[] = new int[3]; 
        int dado2[] = new int[3];
        for(int cont=0; cont< V.size(); cont++){
        dado = (int[]) V.elementAt(cont);
        
        if(cont>0)
           dado2 = (int[]) V.elementAt(cont-1);
        else
        dado2 = dado; 
        
        if(dado[0]==dado2[0])
        {
            linha = linha;
         
           for(int conta=0; conta< dado[2]; conta++){   
           int coluna = (int) (Math.random()*25);
        
           if(conteudo[1][coluna]!= 0)
               conta--;
           else 
               conteudo[1][coluna] = dado[1]; 
          }
        }
        else{
           linha++; 
           cromo2.add(conteudo); 
           for(int p=0; p<25; p++){
               conteudo[1][p] = 0;
           }
        }
       }
      
     for(int cont=0; cont< cromo2.size(); cont++){
        String jana = "";
        int k = 0;
        int prof[][]= new int [2][25];
        prof = (int[][]) cromo2.elementAt(cont);
        for(int j=0; j<25; j++){
            int d = prof[1][j];
            if(d!=0){
            jana = ""+d;
            int t = jana.length();
            jana = jana.substring(0,t-1);
            if(!jana.equals("")){
            d = Integer.parseInt(jana);
            
            for(int l=0 ; l<P.size(); l++){
            int prf[]= new int[2];
            prf = (int[])P.get(l);
            int pr = prf[1];
            if(pr==d){
                aux.add(pr);
              }
            }
            int h = (int)(Math.random()*aux.size());
            k = (Integer) aux.get(h);
             prof[1][j] = k;
             int algum = prof[1][j];
          }
         } 
        }
        cromo.add(prof);
     }
       aptidao = 0; probalidadeSelecao = 0;
    }

3 Respostas

C

NINGUÉM SABE!!!

peczenyj

Não consigo identificar os problemas mas…

Não pude deixar de perceber que vc tem MUITO codigo no construtor da classe Cromossomo.

Seria muito mais facil de separar algumas coisas, de preferência que vc possa efetuar algum teste unitário. Provavelmente é isso que está faltando no seu código: determinar o seu comportamento sob forma de uma suite de testes automatizados.

Se vc não tem tempo, bom, se vc não perder uns minutos pelo menos tentando…

C

Eu sempre coloco linhas pra imprimir a cada fim d laço, sempre testo linha a linha…o erro é na conexão, parece-me q o acces não suporta tantas consultas em pouco tempo, pelo menos é isso q eu acho!

Criado 29 de dezembro de 2007
Ultima resposta 29 de dez. de 2007
Respostas 3
Participantes 2