Erro: Column not found [RESOLVIDO]

pessoal alguém sabe o qué é esse erro?

java.sql.SQLException: Column not found

ja verifiquei todas as colunas do banco, e estão todas corretas. O banco que estou utilizando é o Acces.

De uma revisada no seu código novamente ou posta ele ai, porque esse erro dá quando não encontra a coluna…

flw!

pessoal alguém ai me ajude por favor… preciso mesmo … urgente…

ai meu codigo, ja revisei o banco várias vezes e as colunas estão iguais a que estou pegando…

package Internos;

import conectar.Conexao;
import java.sql.SQLException;
import java.util.List;

/**
*

  • @author vagner duarte
    */
    public class AdicionarContatoControl {
    Conexao conec;

    public List listarContato (String busca){

     List<AdicionarContatoBean> contato = null;
     
     try {
    String sql = "select nome from contato where  nome like '" + busca + "'" ;
     AdicionarContatoBean cont;
     conec = new Conexao();
     conec.Conectar();
     conec.Consultas(sql);
     while (conec.rs.next()) {
        cont = new AdicionarContatoBean();
        cont.setNome(conec.rs.getString("nome"));
        cont.setEmpresa(conec.rs.getString("empresa"));
        cont.setDd1(conec.rs.getString("dd1"));
        cont.setDd2(conec.rs.getString("dd2"));
        cont.setFone1(conec.rs.getString("telefone1"));
        cont.setFone2(conec.rs.getString("telefone2"));
        cont.setData(conec.rs.getString("data_de_cadastro"));
        cont.setCodigo(conec.rs.getInt("codigo"));
        contato.add(cont);
         }
     } catch (SQLException ex) {
         ex.printStackTrace();
     }
    

    return contato;

    }

}

Posta seu código!!!

vejam todo o erro:

java.sql.SQLException: Column not found
at sun.jdbc.odbc.JdbcOdbcResultSet.findColumn(JdbcOdbcResultSet.java:1850)
at sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:411)
at Internos.AdicionarContatoControl.listarContato(AdicionarContatoControl.java:32)
at Tela.Buscar.ListarContato(Buscar.java:250)
at Tela.Buscar.bt_pesquisarActionPerformed(Buscar.java:254)
at Tela.Buscar.access$000(Buscar.java:26)
at Tela.Buscar$1.actionPerformed(Buscar.java:75)
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:6134)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5899)
at java.awt.Container.processEvent(Container.java:2023)
at java.awt.Component.dispatchEventImpl(Component.java:4501)
at java.awt.Container.dispatchEventImpl(Container.java:2081)
at java.awt.Component.dispatchEvent(Component.java:4331)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4301)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3965)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3895)
at java.awt.Container.dispatchEventImpl(Container.java:2067)
at java.awt.Window.dispatchEventImpl(Window.java:2458)
at java.awt.Component.dispatchEvent(Component.java:4331)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
CONSTRUÍDO COM SUCESSO (tempo total: 14 segundos)

[quote=vagner.analista]ai meu codigo, ja revisei o banco várias vezes e as colunas estão iguais a que estou pegando…

package Internos;

import conectar.Conexao;
import java.sql.SQLException;
import java.util.List;

/**
 *
 * @author vagner duarte
 */
public class AdicionarContatoControl {
    Conexao conec;

    public List<AdicionarContatoBean> listarContato (String busca){
        
        List<AdicionarContatoBean> contato = null;
        
        try {
       String sql = "select nome from contato where  nome like '" + busca + "'" ;
        AdicionarContatoBean cont;
        conec = new Conexao();
        conec.Conectar();
        conec.Consultas(sql);
        while (conec.rs.next()) {
           cont = new AdicionarContatoBean();
           cont.setNome(conec.rs.getString("nome"));
           cont.setEmpresa(conec.rs.getString("empresa"));
           cont.setDd1(conec.rs.getString("dd1"));
           cont.setDd2(conec.rs.getString("dd2"));
           cont.setFone1(conec.rs.getString("telefone1"));
           cont.setFone2(conec.rs.getString("telefone2"));
           cont.setData(conec.rs.getString("data_de_cadastro"));
           cont.setCodigo(conec.rs.getInt("codigo"));
           contato.add(cont);
            }
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    return contato;

    }

}

[/quote]

Se a variavel conec for um ResultSet válido, tá tudo certo com o seu código.
Pelo erro tem alguma coluna que o nome não está batendo, para descobrir qual é comenta o código testa com uma de cada vez.
Tenta rodar o sql q está na sua variavel sql direto no banco pra ver se não está com erro.

Espero ter ajudado!

Outra dica evite usar o comando like ele atrapalha muito o desempenho das suas consultas, se tiver muitas linhas na sua tabela ele vai ter que verificar linha por linha e String por string do campo para encontrar o q vc procura.

flw!

ok pessoal, agradeço a todos pela atenção vou fazer isso e tentar descobrir onde esta esse erro, valeu a todos…

Algum desses campos não existem na Tabela [color=red]Contato[/color]: nome,empresa,dd1,dd2,telefone1,telefone2,data_de_cadastro,codigo

Abraço.

cara valeu, mas infelizmente eu posso te afirmar isso, ja conferi isso umas 30 vezes, inclusive ja abri a tabela e fui copiando os nomes das colunas e colando para mim evitar o erro de digitação mas mesmo assim da o mesmo erro. Mas ainda não desistir to verificando tudo aqui…se alguém tiver idéia poste-me ai por favor, agradeço a todos…

Puts essa eu deixei passar, foi vacilo meu… kkkkk :smiley: :smiley: :smiley:

O seu select está assim:

String sql = "select nome from contato where  nome like '" + busca + "'" ; // <-- Essa query só retorna a coluna nome 

E nessa parte do código você está tentando recuperar outros campos que não são retornados na query acima, por isso o erro column not found

cont.setNome(conec.rs.getString("nome"));  
cont.setEmpresa(conec.rs.getString("empresa"));  // <- inválido empresa não retorna 
cont.setDd1(conec.rs.getString("dd1"));  // <- inválido idem o de cima
cont.setDd2(conec.rs.getString("dd2"));  / <- inválido idem o de cima
cont.setFone1(conec.rs.getString("telefone1"));  // <- inválido idem o de cima
cont.setFone2(conec.rs.getString("telefone2"));  // <- inválido idem o de cima
cont.setData(conec.rs.getString("data_de_cadastro"));  // <- inválido idem o de cima
cont.setCodigo(conec.rs.getInt("codigo"));  // <- inválido idem o de cima

Se você quiser que sejam retornados deve mudar sua query.

Mude para isso:

String sql = "select * from contato where  nome like '" + busca + "'" ; // <--  Retorna todos os campos da tabela 

flw!

2 curtidas

Utilize o prepareStatement ficar melhor e não tem risco de sql inject ^^

PreparedStatement pstmt = null;
Connection con = null;
ResultSet rs = null

con = //Factory de conexão ... 

String sql = "SELECT nome, empresa, dd1, dd2, telefone1, telefone2, data_de_cadastro, codigo FROM contato WHERE nome LIKE = ?"

pstmt = con.prepareStatement(sql);
pstmt.setString(1,busca);

rs = pstmt.executeQuery();

Abraço

Primeiramente eu gostaria de agradecer a todos aqueles que me ajudaram e colaboraram comigo, mas infelizmente sou desistir de terminar esse pequeno sistema, ja tenho o problema de ser iniciante, e a cada hora que eu consigo resolver um problema surge outro e nada nunca funciona. ja tem mais de mês que estou tentando fazer essa coisa que parece ser tão simples mas ao mesmo tempo tão complicado. Valeu a todos mais uma vez.

Cara o erro estava no seu select, veja na minha mensagem anterior…

Quando agente está iniciando é comum ter bastante erros e dúvidas.

abraços!

sim, sim eu vi inclusive consertei isso mas como eu disse, outro erro surgiu, quer dizer nenhum erro não sugiu mas quando vou mostrar os dados da a mensagem que nenhum registro foi encontrado, mas quando eu coloco o mesmo codigo no banco aparece todos os dados e ja não sei mais o que fazer… pior que não tem nem como colocar o codigo pois ele é muito grande…

Poste o nome e o tipo das colunas no banco.

vamos la:

nome = tipo texto
empresa = tipo texto
dd1 = tipo texto
dd2 = tipo texto
telefone1 = tipo texto
telefone2 = tipo texto
data = tipo texto
codigo = tipo numerico

OBS: banco de dados Acces.

só mais uma consideração breve, o problema agora não esta mais na consulta no banco, pois fiz como o gilmaslima falou e deu tudo certou ou seja, não esta dando mais erro nenhum, ai pego todo o meu resultset e jogo em um arraylist, mas quando vou mostrar os dados diz que não foi encontrado nehum registro. Mas o mesmo codigo sql no banco me retorna os registro sim.

Onde tu declarou

List&lt;AdicionarContatoBean&gt; contato = null; 

Faça assim

List&lt;AdicionarContatoBean&gt; contato = new ArrayList<AdicionarContatoBean>;