Erro ao buscar dados do access

4 respostas
F

Galera estou tentando pegar dados do access, eu consigo me conectar e testei se os dados estao vindo com sysout e tambem estao vindo, o problema e quando eu vou usar o rs.getString para atribuir a um bean do o erro "No data found"

ai esta a parte do codigo beleza!!

private Sindical_Bean beanSQL = new Sindical_Bean();
	private Sindical_Bean beanAcess = new Sindical_Bean();
	
	
	public void validaDadosAcess() throws SQLException{
		
		String sql=("Select * from MAR_2");
		conexaoAcess = con.conectarBancoAcess();
		stmt =conexaoAcess.createStatement();
		rs= stmt.executeQuery(sql);
		System.out.println(rs.toString());
		
		while(rs.next()){
			System.out.println(rs.getString(2));//Teste para ver se esta indo no banco
			
			
			beanAcess.setCnpj(rs.getString(1).toString());
			beanAcess.setExercicio(rs.getString(2).toString());
					
			if (beanAcess.getCnpj()==null)
			{
				listaSemCnpj.add(beanAcess);
			}
			else if (validaCnpj(beanAcess.getCnpj()))
			{
				listaValidos.add(beanAcess);
			}
			else{
				listaInvalidos.add(beanAcess);
			}
					
		}
		rs.close();
	}

falow!11

4 Respostas

T

Dicas.

  1. SELECT * e rs.getString (número) são coisas que vão lhe atormentar depois, quando for fazer manutenção do sistema (pense em você mesmo!). Use algo como:

SELECT CNPJ, EXERCICIO FROM MAR_2

e

rs.getString (“CNPJ”);

A velocidade de operação de um select sem ser “*” é até maior (porque pega apenas os campos que você precisa), e usando o nome em vez do número a velocidade é quase exatamente a mesma.

  1. Se não me engano, como o Access é acessado via ODBC, você não deve dar mais de um “getString” no mesmo campo dentro do while. Esse seu “teste” está fritando o rs.getString(2) que está sendo feito depois.

  2. getString() já lhe retorna uma String. Se chamar toString() sobre uma string nula você vai ter é um NullPointerException. Não é preciso chamar toString() nesse caso - é até melhor não fazer isso.

F
Thingol eu fiz uma adaptação e mesmo assim ele continua dizendo que nao acha esses dados do cnpj, mas se eu comento a parte em que o rs.getstring adiciona no bean, o programa le todos os cnpj's normalmente, sera que tem alguma coisa a ver com o banco?
public void validaDadosAcess() throws SQLException{
		
		String sql=("SELECT CNPJ FROM MAR_2 ");
		conexaoAcess = con.conectarBancoAcess();
		stmt =conexaoAcess.createStatement();
		rs= stmt.executeQuery(sql);
		System.out.println(rs.toString());
		
		while(rs.next()){
			System.out.println(rs.getString("CNPJ"));//Teste para ver se esta indo no banco
			
			
			beanAcess.setCnpj(rs.getString("CNPJ"));
				
			
			if (beanAcess.getCnpj()==null)
			{
				listaSemCnpj.add(beanAcess);
			}
			else if (validaCnpj(beanAcess.getCnpj()))
			{
				listaValidos.add(beanAcess);
			}
			else{
				listaInvalidos.add(beanAcess);
			}
					
		}
		rs.close();
		System.out.println(listaInvalidos.size());
		System.out.println(listaValidos.size());
		System.out.println(listaSemCnpj.size());
	}

Falow11

F

Thingol era o que tinha falado sobre fazer dois gertString dentro do while!1

Valeu!!!

T

Repetindo o que eu disse.

Criado 17 de maio de 2006
Ultima resposta 17 de mai. de 2006
Respostas 4
Participantes 2