Consulta uma tela em java [RESOLVIDO]

30 respostas
K

Ola meus caros amigos, tudo bem? no meu programa de estoque que estou fazendo em desktop tenho que fazer uma consulta para o meu banco de dados para mostrar na tela todas as informações do tombamento que esta cadastrado no sistema!
Exemplo seria computador com tombo 1110, ele iria mostrar para mim todas as informoções deste computador com esse tombo…

obrigado pela atenção

30 Respostas

G

kerbage:
Ola meus caros amigos, tudo bem? no meu programa de estoque que estou fazendo em desktop tenho que fazer uma consulta para o meu banco de dados para mostrar na tela todas as informações do tombamento que esta cadastrado no sistema!
Exemplo seria computador com tombo 1110, ele iria mostrar para mim todas as informoções deste computador com esse tombo…

obrigado pela atenção

Olha não intendi sua duvida, porém o programa vai exibir o que você mandar exibir vc da um select no banco e pega o que retornar por resultSet e exibe da forma que voce quiser.

K

ola! bem mais como faço para ele ser mostrado nos jtextfield que criei, tipo nome e data!

obrigado

G

textfield.setText(…);

kenneth

Faala brow…

Bom, pra comecar, voce precisa recuperar o registro do banco…
Voce pode usar Hibernate ou fazer “no braco”, com conexao junto ao banco
e PreparedStatement, por exemplo.

Quando conseguir recuperar o objeto do campo, fica facil:

// Algo como...
jtextfield01.setText(objeto.getNome());
jtextfield02.setText(objeto.getData());

E por ai vai…
Lembrado que precisar fazer algumas conversoes de numeros para
string, formatar datas e tudo mais.

Abraco!

K

beleza… eu posso fazer assim?

String sql = "Select * from cad_esoque Where tombo"+'?'" resullset.executeQuery(sql); jtextfield01.setText(objeto.getNome()); jtextfield02.setText(objeto.getData());

kenneth

Fala brow,

Aqui tem um exemplo, da uma lida

http://www.guj.com.br/posts/list/40126.java

Abraco!

V

certo,mas no caso, a informação que virá do banco, terá quantas linhas??
instancia o ResultSet
se for mais que uma vc pode colocar dentro de um while(ResultSet.lenght)
ai vc dá um

ResultSet.getString("Nome") ResultSet.getString("Data")
abçsssss

K

eu já tinha criado uma tabela informando os valores que são gravados no sistema, o meu problema agora é puxar o tombo do equipamento e mostrar todo o seu histórico nos jtextfield que criei que são os campos nome,origem,destino,situação,data e o proprio tombo…
existe dois campos tombo que são tombo cadastro e pesquisa_tombo, é nesse pesquisa_tombo que quero puxar todos valores atribuitos a ele.

vitoryudi eu não posso consultar diretamente esse objeto, tenho que criar uma referência para ele para acessar a resultset!
exemplo:

resultset = rs. rs.getString("Nome") rst.getString("Data")

Anime
conexao conecta_estoque; //cria o objeto conexao

       conecta_estoque=new conexao();//inicializa a classe de conecxão
       conecta_estoque.conecta();//conecta ao banco

      conecta_estoque.executaSQL("select * from TB_estoque order by "+ordem);
       String ordem="campo";//aq vai a chave primaria da sua tabela
    

      public void mostrar_dados()
      {
          try
          {
      
             tf_campo.setText(conecta_estoque.resultset.getString("campo"));
             tf_nome.setText(conecta_estoque.resultset.getString("nome"));
             tf_origem.setSelectedItem(conecta_estoque.resultset.getString("origem"));
         }
          catch(SQLException erro)
        {
             
              JOptionPane.showMessageDialog(null,"Não localizou dados"+erro);
               
           
          }
        
    }

Depois chame o metodo mostrar_dados(),onde vc quiser...

Você já deve ter sua classe,então acho que tem que adaptar ao seu código,talvez, usando só o select e metodo mostrar_dados mesmo...

K

oi Anime tudo blz!
bem o esse conecta_estoque=new conexao(); conecta_estoque.conecta();

bem o que ele faz. tenho criar uma conexao para o banco de dados

obrigado

Anime

:oops: respondi usando o mesmo código,se vc não tem a classe para fazer conexão,então deve criar sim…

K

não entendi, vc pode por favor explicar para mim o seu codigo…
beijos

Anime

Vc tem uma classe que faz a conexão?

K

sim, e a classe conexao que esta conectando com o con_impressoras.

Anime

Não entendi bem,mas vou supor que o nome da sua classe é conexao e o objeto é o con_impressoras.

Então é só vc substituir.

conexao con_impressoras; //cria o objeto conexao  (se vc já tem não precisa criar novamente)
      
        con_impressoras=new conexao();//inicializa a classe de conecxão  
        con_impressoras.conecta();//conecta ao banco  
      
        con_impressoras.executaSQL("select * from TB_estoque order by "+ordem);  //coloque o nome da sua tabela no lugar de TB_estoque
        String ordem="campo";//aq vai a chave primaria da sua tabela  
      
   
         public void mostrar_dados()  
        {  
         try  
        {  
  
           tf_campo.setText(con_impressoras.resultset.getString("campo"));  
           tf_nome.setText(con_impressoras.resultset.getString("nome"));  
           tf_origem.setText(con_impressoras.resultset.getString("origem"));  // aq havia um erro,não sei se vc percebeu
        }  
         catch(SQLException erro)  
        {  
      
             JOptionPane.showMessageDialog(null,"Não localizou dados"+erro);  
        } 
  }
Anime

Vou deixar um outro exemplo,é claro que vc tem que analisar e fazer algumas modificações de
acordo com seu projeto :slight_smile:

package bancodedados;
import java.sql.*;
/**
 *
 * @author 18693
 */
public class ConsultaBDCurso 
{
public static void main(String [] args)
    {
      BDConecta obj=new BDConecta();
      Connection idcon=null;
      ResultSet consulta=null; //objeto q guarda resultado de uma consulta
      idcon=obj.conexaoBD("fontetarde");
      if(idcon != null)
        {
          //-----------------
          //consultar uma tabela atraves de um comando sql
          //classe para comando: Statement
          try
          {        
          Statement cmdsql = idcon.createStatement();
          consulta = cmdsql.executeQuery("SELECT*FROM tbCurso");//consulta
          while(consulta.next())//enquanto tiver proximo registro
          {
              System.out.print(consulta.getString("idCurso"));
              System.out.println("\t"+consulta.getString("nomeCurso"));
          }
          cmdsql.close();
          System.out.println("Consultar a tabela ok");
          }
          catch(SQLException ex)
          {
              System.out.println("Erro em consultar a tabela");
          }
          obj.desconexaoBD(idcon);
        }    
    }
}
laudenpower

Nunca acesse os objetos de acesso a banco como resultset’s na tela do usuário, crie pelo menos uma camada composta de objetos que representem os dados contidos na tabela que você está pesquisando. Nesse caso o teu código de tela fica desacoplado do código do banco de dados.
Dê uma olhada nos padrões DAO (Data Acess Object, considerado por alguns obsoletos, porém o que possui menor curva de aprendizado) e repository (fazendo uso de frameworks como hibernate com critéria), dessa forma você já tem pronto o model do seu MVC (Model View Controller - inclusive estude esse padrão até dizer chega :slight_smile: ). Depois disso pronto faça como eu disse pegue os objetos gerados pelo DAO ou repository e os passe para a visão por meio do controller (nesse caso não temos bem um MVC mais sim um MVP que significa Model View Presenter que é outro assunto importante para estudar também).
O caminho parece longo mais certamente é o melhor, caso você queira desenvolver código de qualidade. :slight_smile:

Anime

Lembrei e uma apostila que me indicaram,da uma olhada na parte de BD…

http://downloads.caelum.com.br/apostila/caelum-java-web-fj21.pdf

K

pessoal obrigado pela atenção e com certeza vou pegar as dicas de vocês meus colegas e estudar, pois tenho ainda um caminho longo pela frente! Anime eu vou fazer as alterações e lhe dou um retorno…
Aline o seu codigo rodou ai normal?

obrigado
um abraço

K

ainda nao deu certo, deu erro!

Anime

Que erro?

Já tentou fazer de outro jeito?

Talvez o problema é no banco(tabela) e não no código…

L

Cara tenta separar o pouco o código que fica mais fácil, não é fácil trabalhar com Java com uma arquitetura cliente servidor.
Tenta organizar um pouco mais o código. É simples é só aplicar alguns padrões de projetos como o MVC que já resolveria metade de teus problemas.
Organiza as classes em pacotes que têm algo em comum, e divide por camadas, algo do tipo: cria uma camada de visão(View) para fazer a interface homem máquina com o usuários, cria alguns controladores que irão servir de cérebro para tua aplicação e faz com tua visão conheça apenas eles. Depois cria alguns pacotes que conterão a lógica da tua aplicação e acesso aos dados do banco de dados. entre outras coisas…
Dessa forma ficará bem mais fácil trabalhar.

K
a primeira parte deu certo que a consulta do tombo na tabela postgres e imprime nos campos jtextfield. aqui esta o código: {
con_impressoras.executeSQL("select * from cad_estoque where tombo = "+  tf_pesquisa.getText());
        System.out.println(tf_pesquisa.getText());
            
        preencher_jtable();

        tf_codigo.setText("");
        tf_nome.setSelectedItem("");
        tf_nome.requestFocus();
        tf_data.setDate(new Date());
        tf_tombo.setText("");
        tf_origem.setSelectedItem("");
        tf_destino.setSelectedItem("");
        tf_situacao.setText("");
        tf_codigo.setEditable(false);

mostrar_dados();
//preencher_jtable();


    }

}
o que eu fiz foi fazer uma pesquisa no banco passando como referência meu campo tf_pesquisa... só que agora eu queria que quando o usuario apertasse o botão para procurar o tombamento e ele esqueceu de cologar a numeração no campo, que aparece uma mensagem para ele para lembrando que tem obrigatoriamente digitar a numeração.... fiz ate um equals, mão não esta dando certo, pois em vez de aparecer a tela informando a numeração do tombo, aparece um exception do sql!

outro código adicionado o metodo equals!:

if( jB_pesquisar.getText().equals("")|| tf_pesquisa.getText().equals(""))

     JOptionPane.showMessageDialog(null,"Digite um Tombo da impressora para pesquisa");
    

 {
              
con_impressoras.executeSQL("select * from cad_estoque where tombo = "+  tf_pesquisa.getText());
        System.out.println(tf_pesquisa.getText());
            
        preencher_jtable();

        tf_codigo.setText("");
        tf_nome.setSelectedItem("");
        tf_nome.requestFocus();
        tf_data.setDate(new Date());
        tf_tombo.setText("");
        tf_origem.setSelectedItem("");
        tf_destino.setSelectedItem("");
        tf_situacao.setText("");
        tf_codigo.setEditable(false);

mostrar_dados();
//preencher_jtable();


    }

}
Anime

Kerbage,desculpe mas não entendi bem.
O 1º cod deu certo e o 2º não?Seu problema é com o campo que não deve ser nulo nem vazio?
Tente explicar melhor,por favor…

K

Oi Anime blz, como sempre dando um help pra gente que está aprendendo agora,! bem isso mesmo que vc falou o primeiro código deu certo, isso mesmo quando os campos não podem ser nem nulos e num vazios.

não sei pq o metodo equals não funcionou!

Anime

Olha vou deixar mais um exemplo,tenta resolver,é tão bom quando a gente consegue “sozinho”,seguindo um exemplo…

import javax.swing.*;
class P59
{
	public static void main(String args[])
	{
	 String s;
	 int i;
	 try
	 {
	  s=JOptionPane.showInputDialog(null,"Digite um numero inteiro","Numero Inteiro",JOptionPane.INFORMATION_MESSAGE);
	  if(s==null)
	  JOptionPane.showMessageDialog(null,"Você cancelou ou fechou","Mesagem",JOptionPane.PLAIN_MESSAGE);
	  else if(s.equals(""))
	  JOptionPane.showMessageDialog(null,"Você não digitou nada","Mensagem",JOptionPane.PLAIN_MESSAGE);
	  else
	 {
	 	i=Integer.parseInt(s);
	 	JOptionPane.showMessageDialog(null,"O numero digitado foi "+i,"Mensagem",JOptionPane.PLAIN_MESSAGE);
	 }
}//fim do try
catch(NumberFormatException e)
{
	JOptionPane.showMessageDialog(null,"Valor invalido ","Erro",JOptionPane.ERROR_MESSAGE);
}
}
}
K
Oi! aqui esta aqui o codigo que fiz!
if("".trim().equalsIgnoreCase(tf_pesquisa.getText()) || tf_pesquisa == null || tf_pesquisa.getText().equalsIgnoreCase("")){

    // JOptionPane.showMessageDialog(null,"Digite um Tombo da impressora para pesquisa");
    }
   else
 {

     try {
        con_impressoras.executeSQL("select * from cad_estoque where tombo = "+  tf_pesquisa.getText());
        preencher_jtable();

        tf_codigo.setText("");
        tf_nome.setSelectedItem("");
        tf_nome.requestFocus();
        tf_data.setDate(new Date());
        tf_tombo.setText("");
        tf_origem.setSelectedItem("");
        tf_destino.setSelectedItem("");
        tf_situacao.setText("");
        tf_codigo.setEditable(false);


mostrar_dados();
     } catch (Exception sqlex) {

         JOptionPane.showMessageDialog(null,"Digite um Tombo da impressora para pesquisa");


     }
              



System.out.println("texto = " + tf_pesquisa.getText()); // imprime na tela como para ver como esta a conexao
            
        

//preencher_jtable();


    }
mais nada acontece!
K

resolvido anime!

try {

by torcapio
        if ( tf_pesquisa.getText().startsWith(" ")){

        JOptionPane.showMessageDialog(null,"Digite um Tombo da impressora!");
        }
      else
    {
        con_impressoras.executeSQL("select * from cad_estoque where tombo = "+  tf_pesquisa.getText());
        preencher_jtable();

        tf_codigo.setText("");
        tf_nome.setSelectedItem("");
        tf_nome.requestFocus();
        tf_data.setDate(new Date());
        tf_tombo.setText("");
        tf_origem.setSelectedItem("");
        tf_destino.setSelectedItem("");
        tf_situacao.setText("");
        tf_codigo.setEditable(false);


mostrar_dados();



      }


    } catch (Exception sqlex ) {

        JOptionPane.showMessageDialog(null,"Erro!!"+sqlex);

        


    }
pela sua explicação teu para notar que não estava utiillizando corretamento try catch e peguei o metodo starwith em vez do equals ou trim.
Anime

Que bom,fiquei feliz. :stuck_out_tongue:
Coloque resolvido…

abs…

K

vlz! obrigado pela ajuda

Criado 25 de agosto de 2010
Ultima resposta 2 de set. de 2010
Respostas 30
Participantes 7