Olá pessoal !!
Estou com um pequeno probleminha. Estou querendo listar a quantidade de tabelas em um database com list. Estou anexando o código abaixo:
publicStringnomes=null;publicList<String>tabelas;publicMain(){try{Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");...Statementstmnt=conn.createStatement();ResultSetrs=stmnt.executeQuery("select name from sysobjects where type = 'U'");while(rs.next()){tabelas.add(rs.getString(1));tabelas.add("\n");}for(inti=0;i<tabelas.size();i++){nomes+=tabelas.get(i);}JOptionPane.showMessageDialog(null,nomes,"sysobjects",JOptionPane.INFORMATION_MESSAGE);}catch(Exceptione){JOptionPane.showMessageDialog(null,e.getStackTrace(),"Erro",JOptionPane.ERROR_MESSAGE);}}
Vc está acumulando as tables na String nomes. Isso não tem um desempenho bom, use StringBuilder.
P
pedrohmsPJ
Esse objeto do JDBC funciona como uma lista ? Certo. Vamos dizer que funcione. Ele roda fora do JDBC? eu estou querendo ultilizar o objeto List pra outras coisas também, e se enquadram ao estilo deste código que provavelmente irão ter retorno do mesmo erro. o erro que está me retornando no debug é: [Ljava.lang.StackTraceElement;@112f614. E em String é:
“principal.Main<init>(Main.java:26)”
E outra coisa. Se eu substituir o List por Element, faz alguma diferença ou é apenas outro objeto que funciona da mesma maneira? O List ou o Element seriam inadequados pra mim armazenar cadastros como se fossem tabelas temporárias ?
Se poder me ajudar nessas questões agradeceria muito. Vlw.
F
fabiofalciPJ
Após retornar o ResultSet é só seguir com o teu algoritmo.
No caso vc está colocando numa List<String>, pode ser o mesmo.
P
pedrohmsPJ
Agora estou em outra situação. Eu substitui o List por JList. Até aí tudo certo. Só q to querendo q o JOptionPane retorne o valor do que está selecionado no JList.
Statementstmnt=conn.createStatement();ResultSetrs=stmnt.executeQuery("select name from sysobjects where type = 'U'");listaNomes=newJList();while(rs.next()){listModel.addElement(rs.getString(1));}scrolPane=newJScrollPane(listaNomes);listaNomes.setModel(listModel);listaNomes.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);JOptionPane.showMessageDialog(null,scrolPane,"sysobjects",JOptionPane.INFORMATION_MESSAGE);}catch(Exceptione){JOptionPane.showMessageDialog(null,e.getStackTrace(),"Erro",JOptionPane.ERROR_MESSAGE);System.out.println(e.getStackTrace());}
Vlw ae quem me ajudar. Desde já agradeço.
F
fabiofalciPJ
Para retornar o selecionado num JList é:
listaNomes.getSelectedValue()
P
pedrohmsPJ
Sei. Mas então quando clico em OK do JOptionPane ele irá retornar este objeto?
F
fabiofalciPJ
Ah, ok, agora entendi.
Ele em si não vai o valor da seleção na lista, mas sim de acordo com o botão pressionado.
Faz o seguinte, depois de chamar o JOptionPane consulta a JList com o método que passei antes. Deve retornar o selecionado.