Consulta Banco de Dados

7 respostas
A

Galera o seguinte código esta fazendo uma consulta ao banco:

Mas sempre apresenta o JOptionPane.showMessageDialog(null, “Erro de Consulta” );

Ele está conectando normalmente.

Qual pode ser o erro???

7 Respostas

yorgan

Olá amigo,
Primeiramente, tente utilizar as tags de código. Visualmente fica bem melhor.
Qual a mensagem que aparece no console?
Tente executar algo assim:

String sql = "SELECT * FROM Pagamento"; 
        PreparedStatement ps = c.prepareStatement(sql);   
        ResultSet rs = ps.executeQuery();

Para ver se o erro não está na clausula where?
Se rodar certinho, monte o seu SQL novamente.
E recomendo que utilize curingas.
Algo como:

String sql = ("SELECT * FROM Pagamento WHERE matricula LIKE '%?%' AND mes LIKE '%?%' AND ano LIKE '%?%' ");         
        PreparedStatement ps = c.prepareStatement(sql);   
        //Aqui você seta os valores dos ?
        ps.setString(1, bd_Matricula);
        ps.setString(2, bd_Mes);
        ps.setString(3, bd_Ano);
        ResultSet rs = ps.executeQuery();

Abraço

A

Olá.

Desculp ter usado o cote, não observer o Code.

Então, nesse código não acha o c.

O que acontece é o seguinte. Se eu tiro a atribuição de valores nas variaveis bd_* que está antes de if (rs.next() ) o programa funciona, mas não atribui os valores.
Se eu coloco, o erro acontece…

No console não aparece nada.

Obs: Na terceira vez que eu pesquiso, sem a atribuição de valores, o programa apresenta a mensagem.

yorgan

Mas antes de abrir o rs, não tem como pegar os valores. Você precisa dar um next de qualquer maneira.
Se você executar o seu SQL diretamente no banco, ele traz algum resultado?
E tente mudar para o padrão que mostrei na mensagem anterior.

Abraço

A

Olá.

Meu querido amigo. Tirei a parte de cima, e fiz as modificações, agora somente apresenta a mensagem de não encontrado. Uma duvida, por que tenho q dar o next de qualquer forma??

Abç.


http://lh6.google.com/alcampagnani/R_0CHOCEQUI/AAAAAAAAAEY/x67zegMvutM/s400/acess.jpg

Da uma olhada, deveria achar, não?

yorgan

Amigo, não lembro a correta explicação. Mas antes de dar o next, o rs ainda não está na primeira posição dos registros que ele trouxe do banco. É como se não tivesse nenhum dado para aquela posição de memoria. Então você precisa dar um next para ele se desolcar para o primeiro registro. Se for pensar, até é melhor assim, pois facilita a vida quando a ideia é trazer mais de um registro, utilizando o while. E até para verificar se veio algum registro do banco, pois o next() retorna um boolean.
Mas recomendo que teste o seu SQL primeiramente no banco. Rode ele com os valores que está passando nas variáveis e verifique se realmente está vindo o que você quer. Depois disso você vai saber se é problema de código da aplicação ou dados no banco.

Abraço

A

Cara,

o problema que o banco ta no acess… e um trabalhinho de faculdade…

não acha os valores mesmo. o rs.next() ta dando com falso…

Alguem pode ajudar??

A

Já Resolvi.

Obrigado.

Criado 9 de abril de 2008
Ultima resposta 9 de abr. de 2008
Respostas 7
Participantes 2