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…
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
kerbage
ola! bem mais como faço para ele ser mostrado nos jtextfield que criei, tipo nome e data!
obrigado
G
guialeixo
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:
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
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:
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
kerbage
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
kerbage
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
kerbage
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
packagebancodedados;importjava.sql.*;/** * * @author 18693 */publicclassConsultaBDCurso{publicstaticvoidmain(String[]args){BDConectaobj=newBDConecta();Connectionidcon=null;ResultSetconsulta=null;//objeto q guarda resultado de uma consultaidcon=obj.conexaoBD("fontetarde");if(idcon!=null){//-----------------//consultar uma tabela atraves de um comando sql//classe para comando: Statementtry{Statementcmdsql=idcon.createStatement();consulta=cmdsql.executeQuery("SELECT*FROM tbCurso");//consultawhile(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(SQLExceptionex){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 ). 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.
Anime
Lembrei e uma apostila que me indicaram,da uma olhada na parte de BD…
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
kerbage
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
leandroADS
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
kerbage
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(newDate());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(newDate());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
kerbage
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…
importjavax.swing.*;classP59{publicstaticvoidmain(Stringargs[]){Strings;inti;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);elseif(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 trycatch(NumberFormatExceptione){JOptionPane.showMessageDialog(null,"Valor invalido ","Erro",JOptionPane.ERROR_MESSAGE);}}}
K
kerbage
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(newDate());tf_tombo.setText("");tf_origem.setSelectedItem("");tf_destino.setSelectedItem("");tf_situacao.setText("");tf_codigo.setEditable(false);mostrar_dados();}catch(Exceptionsqlex){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
kerbage
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.