Boa Noite,
estou tentando fazer a seguinte tela
escreve nome e parte o botão consultar, nisso deveria apresentar os dados numa tabela ja pronta. tentei o seguinte código, mais n ta rolando.
Poderiam me ajudar? ele não a erro, somente n gera na tabela
try{conexao();DefaultTableModelJCONSULTA=newDefaultTableModel(null,newString[]{"Código","Nome","Cpf"});JTabletabela=newJTable(JCONSULTA);resultSet=statement.executeQuery("SELECT r.nome, r.horario, r.estadio FROM restaurante r, categoria c\n"+"where r.categoria_idcategoria = c.idcategoria");while(resultSet.next()){String[]dados=newString[3];dados[0]=resultSet.getString("nome");dados[1]=resultSet.getString("horario");dados[2]=resultSet.getString("estadio");JCONSULTA.addRow(dados);}catch(Exceptione){System.out.println("Não foi possivel conectar ao banco");}
tente fazer da seguinte maneira fechar a {} do seu while, declare a sua DefaultTableModel fora do try
e não passe o seu model no construtor da JTable e sim use a a propriedade setModel da JTable .
Isso porque a JTable usa o padrão MVC e o model se trata da camada de dados.
Assim:
publicvoidPreencheTabela(){DefaultTableModelJCONSULTA;try{JCONSULTAnewDefaultTableModel(null,newString[]{"Código","Nome","Cpf"});//instância a sua JTableJTabletabela=newJTable();//define o modelo(camada de dados) da JTabletabela.setModel(JCONSULTA);//continue o seu código}catch(Exceptione){//trate a sua exceção aqui}}
Espero ter ajudado
Caso continue a apresentar problemas avise e poste o código
P
priajf
Lucas,
Consegui fecha a consulta bem simples…
tabela.getColumnModel().getColumn(0).setPreferredWidth(20);tabela.getColumnModel().getColumn(1).setPreferredWidth(20);tabela.getColumnModel().getColumn(2).setPreferredWidth(10);//Cria modelo de tabelaDefaultTableModelmodelo=(DefaultTableModel)tabela.getModel();modelo.setNumRows(0);//chama classe categoriascategoriascg=newcategorias();cg.setNome(Nome.getText());try{conectabanco();System.out.println(Nome.getText());//executa selec para pesquisar restaurantesStringsqlQuery="SELECT r.nome, r.horario, r.estadio FROM restaurante r, categoria c\n"+"where r.idcategoria = c.idcategoria and c.nome like ?";PreparedStatementps=connection.prepareStatement(sqlQuery);//A linha abaixo, ira comparar o text o digitado procurando no selec acimaps.setString(1,"%"+Nome.getText()+"%");//executa consultaResultSetresultSet=ps.executeQuery();//("SELECT r.nome, r.horario, r.estadio FROM restaurante r, categoria c\n" +//"where r.categoria_idcategoria = c.idcategoria and c.nome like %" + Nome.getText()+"%" );while(resultSet.next()){//traz os dadosString[]dados=newString[3];dados[0]=resultSet.getString("nome");dados[1]=resultSet.getString("horario");dados[2]=resultSet.getString("estadio");modelo.addRow(dados);}}catch(Exceptione){System.out.println("Não foi possivel conectar ao banco");}}
Mais estou com outro problema, preciso cadastrar dados que se encontram num combox… COmo faço isso, alguma ajuda?
L
lucas93lange
Então para cadastrar os dados que estão no comboBox
Outra dica boa seria você utilizar o padrão MVC no seu projeto,
assim você evita a repetição do código em vários trechos da aplicação e facilita a manutenção
No caso toda a parte que se refere a comunicação e interação com o banco de dados pode
ficar numa classe separada cada operação em um método distinto.
Caso você tenha mais de uma comboBox é so repetir o codigo acima.
Se na sua combo o dado for de outro tipo que não seja texto é só fazer o cast para o tipo adequado.
o metodo “getSelectedItem()” retorna um objeto
P
priajf
Voou fazer aqui,
como vou chamar uma classe de conexão?
conexao = new conexao();?
valeu
L
lucas93lange
Assim
Voce cria uma classe onde em cada metodo voce chama a conexão
//ExemplopublicclassExemploDAO(){publicString[]selecionaRestaurante(StringNome){String[]dados=newString[3];try{//que é a sua connectionConnectioncon=conectabanco();System.out.println(Nome);//executa selec para pesquisar restaurantes StringsqlQuery="SELECT r.nome, r.horario, r.estadio FROM restaurante r, categoria c\n"+"where r.idcategoria = c.idcategoria and c.nome like ?";PreparedStatementps=connection.prepareStatement(sqlQuery);//A linha abaixo, ira comparar o text o digitado procurando no selec acima ps.setString(1,"%"+Nome+"%");//executa consulta ResultSetresultSet=ps.executeQuery();//("SELECT r.nome, r.horario, r.estadio FROM restaurante r, categoria c\n" + //"where r.categoria_idcategoria = c.idcategoria and c.nome like %" + Nome.getText()+"%" ); while(resultSet.next()){//traz os dados dados[0]=resultSet.getString("nome");dados[1]=resultSet.getString("horario");dados[2]=resultSet.getString("estadio");}resultSet.close();ps.close();con.close();}catch(Exceptione){System.out.println("Não foi possivel conectar ao banco");}returndados;}}
Ai você você implementa a consulta,update,insert,delete em metodos separados e o retorno na View(que no caso é o seu JFrame) voce chama a classe e o metodo que voce quer