if(txtRC.getText()!=null)
{
resultado=comando.executeQuery("select nome,turma,turno from aluno where Id='"+txtRC.getText()+"'");
if(resultado.next())
{
txtNome.setText(resultado.getString(1));
txtTurma.setText(resultado.getString(2));
txtTurno.setText(resultado.getString(3));
}
carregaDisciplinas();
}
Pesquisa pega so o primeiro nome do banco,se há nomes iguais.[resolvido]
27 Respostas
Adicione um ORDER BY, ex:
resultado=comando.executeQuery("select nome,turma,turno from aluno where Id='"+txtRC.getText()+"' ORDER BY Id DESC");
DESC significa que vai ordernar os dados do maior Id para o menor, entao se vc tiver dois alunos com o mesmo nome, o ultimo aluno cadastrado vai ficar sempre em primero na lista.
Soh vai funcionar se vc tiver um ID que pode ser ordenado, claro.
Se vc tiver a data de cadastro tb funcionaria para ordenar colocar o ultimo cadastrado no topo da lista.
//Daniel
você tem que colocar a lógica de leitura do ResultSet em um laço
por exemplo
while(resultado.next())
{
txtNome.setText(resultado.getString(1));
txtTurma.setText(resultado.getString(2));
txtTurno.setText(resultado.getString(3));
}
carregaDisciplinas();
Oi windsofhell,
acho que não expliquei direito mas vou tentar ser mais clara através deste exmplo:
Cadastrei os alunos:
Joao id 2
JOAO id 15
joao id 17
se eu faço a pesquisa como eu havia postado antes pelo rc 15 ou 17 ele troca pelo Joao de id 2 =(
Eu usei o ORDER BY Id DESC e a gora se eu pesquiso JOAO id 15 me retorna o joao de id 17 =(
o que eu gostaria que acontecesse era que cada aluno viesse certinho de acordo com o id mesmo que haja outros com nomes iguais
não sei se tu me entendeu agora é que eu não explico muito bem =( mas era isso
obrigada pela ajuda!

você tem que colocar a lógica de leitura do ResultSet em um laço
por exemplo
while(resultado.next()) { txtNome.setText(resultado.getString(1)); txtTurma.setText(resultado.getString(2)); txtTurno.setText(resultado.getString(3)); } carregaDisciplinas();
Boa, nem tinha reparado nao tem um laco no codigo, so vai pegar somente um registro.
Oi windsofhell,
acho que não expliquei direito mas vou tentar ser mais clara através deste exmplo:
Cadastrei os alunos:
Joao id 2
JOAO id 15
joao id 17se eu faço a pesquisa como eu havia postado antes pelo rc 15 ou 17 ele troca pelo Joao de id 2 =(
Eu usei o
ORDER BY Id DESCe a gora se eu pesquiso JOAO id 15 me retorna o joao de id 17 =(o que eu gostaria que acontecesse era que cada aluno viesse certinho de acordo com o id mesmo que haja outros com nomes iguais
não sei se tu me entendeu agora é que eu não explico muito bem =( mas era isso
obrigada pela ajuda!
Eh, acho que a solucao pro seu problema eh como o duduribeiro respondeu, coloca dentro de um loop, porem, se vc ficar isso:
txtNome.setText(resultado.getString(1));
txtTurma.setText(resultado.getString(2));
txtTurno.setText(resultado.getString(3));
Se op resultado tiver mais de um aluno, vai sobreescrever os resultados dos text boxes. O ideal era carregar uma tabela ou coisa do tipo
//Daniel
if(txtRC.getText()!=null)
{
resultado=comando.executeQuery("select nome,turma,turno from aluno where Id='"+txtRC.getText()+"'");
while(resultado.next())
{
txtNome.setText(resultado.getString(1));
txtTurma.setText(resultado.getString(2));
txtTurno.setText(resultado.getString(3));
}
carregaDisciplinas();
}
obrigada pela ajuda!
:)
você ta setando ojtextfield toda vez que passa no while, (ele vai colocar o valor por cima do que está atualmente)
coloca a saida num sysout e verifica se o resultset está trazendo todos registros
oi duduribeiro,
eu coloquei o System como tu disse e imprimiu o joao do id 2 =(
isso ta acontecendo pq os nomes são iguais mesmo que os id’s sejam diferentes?
na minha tela tem uma campo para te digitar o id ai eu digito 15 e troca o id para 2 e vem as informacoes do joao com id 2 
esse campo txtRC contem o código ou o nome ??
txtRc contem o codigo/id do cadastro
quando você executar a query "select nome,turma,turno from aluno where Id='"+txtRC.getText()+"'"
ele vai trazer somente o registro do código que você digitou
por isso está trazendo somente do id 2…
esse é o problema eu não estou digitando 2 e sim 15
pensei que estivesse acontecendo isso pq tanto o aluno do id 2 quanto o do id 15 tem o mesmo nome :roll:
estranho…e na hora do laço o txtRC.getText() está com o valor 15?
Tente fazer nessa lógica
if(txtRC.getText()!=null)
{
resultado=comando.executeQuery("select nome,turma,turno from aluno where Id='"+txtRC.getText()+"'");
while(resultado.next())
{
Discipinhas disciplinas = new Disciplinhas();
disciplinas.setNome(resultado.getString("nome"));
disciplinas.setTurma(resultado.getString("turma"));
disciplinas.setTurno(resultado.getString("turno"));
}
//carregaDisciplinas();
adicionaDisciplinas(disciplinas);
carregaDisciplinas();
}
sim o txtRC.geteText() tem valor 15 ai quando eu clico em pesquisar ele troca o rc e os outros dados para o aluno joao do id 2
e o pior é que eu uso uma pesquisa igual a esta em outra tela e na outra tela funciona =( eu ate tava pensando sera que não é algum bug nesta minha versão do eclipse?
nao é bug, vc nao esta criando um novo objeto, ele esta salvando apenas o ultimo elemento do ResultSet
oi TheKill
acho que estou fazendo nesta mesma lógica:
faço a verificação se o campo de texto não é null;
ai pego o resultado da pesquisa e insiro nos campos correspondentes…
não sei pq ta acontecendo esta falha na pesquisa 
mas pq eu preciso criar um novo objeto ?os meus textfields ja foram criados no inicio da classe eu apenas quero trocar o texto deles …
eu preciso criar eles ali dentro e só declara-los no inicio da classe?
vc nao entendeu.
Vc nao esta dando um Disciplinas disciplinas = new Disciplinas();
Sempre que ele passar no while(…) vc precisa criar um novo objeto para o resultaod.
e depois sim, trabalhar com esse objeto. Vc esta fazendo o seguinte!
String a,b,c;
while(...){
//1 linha do while
a = "a';
b= "b";
c= "c";
//2 linha do while
a = "d";
b = "e";
c = "f";
}
System.out.print(a + " "+b + " "+c);
//Resposta: d e f
não to te entendendo eu não uso um while eu uso um if pq eu quero um resultado de cada vez…
eu digito no campo txtRc o id do aluno q eu qro pesquisar ai vem outros dados relacionados a este aluno…
o que esta acontecendo é q eu tenho cadatrado 3 alunos com o mesmo nome e dados diferentes inclusive o id pois ele é unico de cada aluno…
acontece que eu tenho salvo la no banco
joao id 2
JOAO id 15
Joao id 17
se eu digito o id 15 ou 17 ao inves de virem os dados relacionados a eles vem os dados do joao com id 2!!!
esse é o problema eu quero que retorne so os dados do aluno referentes aquele id =(
não sei se tu me entendeu…
Se vc colocar no IF, ele vai pegar o primeiro que aparecer! Vai pegar apenas o primeiro que encontrar, e vc quer todos nao é? entao use While
Hum, execute o seu sql no seu gerenciador de banco de dados e veja se aparece a resposta correta
na verdade eu quero só buscar os dados do aluno cujo o id for o que eu digitei na caixa de texto…não quero os demais alunos
entao teu sql esta errado…
no banco vem certo o aluno!na aplicação não
mas pq?
“select nome,turma,turno from aluno where Id=’”+txtRC.getText()+"’"
ID é Long? Se ele é numero porque as ’ ’ ?
Utilize apenas Integer.parseInt(txtRC.getText())
o id é do tipo int e olha so tirei as ‘’ e agora ta funcionando direitinho
:lol: brigada!!!
De nada, altere o primeiro topico para [Resolvido] …