Como fazer com q comboBox receba valores de uma tabela do banco e ao alterar valor do combo, altere também valor de uma textfield que recebe outra coluna da mesma tabela?
Código q estou tentando fazer funcionar
publicvoidatualiza(){try{Stringsql="select * from impressora";statement=bd.con.prepareStatement(sql);rs=statement.executeQuery();while(rs.next()){cImpressora.addItem(rs.getString(1));txtImp.setText(rs.getString(2));}}catch(Exceptionerro){JOptionPane.showMessageDialog(null,"Truta hine "+erro.toString());}}
Não entendi o que você perguntou.
Mas acredito que seja se você receber o valor no Combo por exemplo “DESKJET” você queira que mostre um resultado no TextField.
Não se esqueça que COMBOBOX é um VETOR então você pode armazenar vários valores atraves no rs.next(), e no txtimp, você armazenará somente o último valor.
Então faça algo com o método equals();(crie um evento) e caso você ache “DESKJET” no COMBO ao ser clicado, você fará uma pesquisa no BD e preencherá a JTETFIELD.
K
KaUer
Quando você usa um resultset ele retorna null, 1 ou mais valores, então te aconselho a criar uma String[] ou uma ArrayList, no caso eu criaria uma Array pois ficaria mais fácil. Mas pode escolher o que quiser…
F
fornail
No caso …digamos que o ComboBox mostre a Marca e o textfield o modelo…entende ? Ai cada vez q mudo o combo…também muda a textfield
F
Fabio_Daros
Foi exatamente que disse.
Se achar uma coisa, crie um método que chama uma query para procurar outra. Não precisa você sobrecarregar seu sistema trazendo tudo que que tem no BD.
Então popule somente a COMBOBOX, depois crie uma String que recebe a COMBOX, depois analise ela com o equals
string.equals("DESKET!"){//CHAMA BD AQUI (Query e da um set na TESXTFIELD),}
F
fornail
Mais ou menos isso ? haha
try{Stringsql="select * from impressora";statement=bd.con.prepareStatement(sql);rs=statement.executeQuery();while(rs.next()){cImpressora.addItem(rs.getString(1));}Stringcode=(String)cImpressora.getSelectedItem();code.equals("modelo"){Stringsql1="select * from impressora";statement=bd.con.prepareStatement(sql);rs=statement.executeQuery();
F
Fabio_Daros
Eu faria assim:
Veja apenas sua classe conexão como você usa ou fez ela:
if(code.equals("modelo"){Strigsql="select * from impressora";rs=statement.executeQuery(sql);try{con.resultset.next();do{txtImp.setText(sql);}}while(con.resultset.next());}catch(Exceptione){}
F
fornail
testando…
F
fornail
Tem algo errado aqui… ? não aparece nada na TXT
try {
Stringsql="select * from impressora";statement=bd.con.prepareStatement(sql);rs=statement.executeQuery();while(rs.next()){cImpressora.addItem(rs.getString(1));Stringcode=(String)cImpressora.getSelectedItem();if(code.equals(rs.getString("modelo"))){Stringsql1="select * from impressora";statement=bd.con.prepareStatement(sql1);rs=statement.executeQuery(sql1);try{rs.next();do{txtImp.setText(sql1);}while(rs.next());}catch(Exceptione){}}}}catch(Exceptione){e.printStackTrace();
F
fornail
também fiz assim e quase deu certo…mas só aparece um registro
public void fillText(){
try{Stringsql="select * from impressora";statement=bd.con.prepareStatement(sql);rs=statement.executeQuery();while(rs.next()){cImpressora.addItem(rs.getString("nPatrimonio"));Stringcode=(String)cImpressora.getSelectedItem();try{Stringsql1="select * from impressora WHERE nPatrimonio='"+code+"'";statement=bd.con.prepareStatement(sql1);rs=statement.executeQuery();while(rs.next()){txtImp.setText(rs.getString("modelo"));}}catch(Exceptione){e.printStackTrace();}}}catch(SQLExceptione){// TODO Auto-generated catch blocke.printStackTrace();}}