Imprimir consulta na tela

11 respostas
DANIEL35
Olá, amigos. Mais uma vez estou precisando da valiosa ajuda de todos. Estou quase terminando meu projeto e agora preciso demonstrar uma consulta através de um textField ou um campo grande ou até mesmo chamar o console me trazendo meus cadastros no banco de dados. Não sei bem como fazer. O método consulta eu já tenho, só não sei onde exibir o que vier de resposta desse método. Alguém de boa vontade poderia me ajudar? Obrigado. Vejam o método:
public void consultar() throws FileNotFoundException {
     try {
     	    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            cn = DriverManager.getConnection(Conexao.CONEXAO);
            st = cn.createStatement();
            String query = "SELECT * FROM ALUNO;";
            rs = st.executeQuery(query);

            while(rs.next()) {
				System.out.println(
				rs.getString(1) + " | " +
				rs.getString(6) + " | " +
				rs.getString(8)
				);				
			}
           cn.close();
            
     	System.out.println("\n\n");

        } catch (Exception e) {
        }
	}	
}

11 Respostas

paulomn

olha vo te da uma ideia, pq vc nao usa o while pra coloca todos os resultados do select em um array ou um arraylist, e depois com um for vc coloca eles em uma jtable ou um jtextarea, ou aonde quiser

DANIEL35

Gostei da idéia, mas teria como explicar um pouco melhor?

DANIEL35

Ou então, como faço para chamar a tela do console, quando executo o programa através do .jar? Digo isso, porque, na tela do console, eu consigo imprimir meus cadastros do banco. Teria como chamar a tela do prompt?

paulomn

mais ou menos assim...

public void consultar() throws FileNotFoundException {
     ArrayList resultado = new ArrayList();
     
     try {
     	    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            cn = DriverManager.getConnection(Conexao.CONEXAO);
            st = cn.createStatement();

            String query = "SELECT * FROM ALUNO;";
            rs = st.executeQuery(query);

            while(rs.next()) {
			        resultado.add( //colocando tudo que encontrar na arraylist
			        rs.getString(1) + " | " +
				rs.getString(6) + " | " +
				rs.getString(8)
                                );								
			}

             for(int i; i<resultado.size(); i++) { //esse for pode ser aonde voce quiser, dependendo da onde for instanciada a arraylist voce pode usar ela onde achar melhor
             
             //aki vc vai colokando na jtextfield ou jtextarea com o metodo suaarraylist.get(i);
             //mais nao esqueca de converter para string com o metodo .toString();, pois os elementos da arraylist sao objetos

             }

           cn.close();           

        } catch (Exception e) {
        }
	}	
}
>
paulomn

cara ai eu ja nao sei, eu nao mecho com console, trabalho mais com swing no netbeans. :slight_smile:

mais eu acho q se for pra console vc pode usar System.out.println dentro do for pra ir jogando na tela entao…

DANIEL35

Então, eu entendi sua idéia, mas na verdade, o que eu sei de arraylist é tão pouco. Meu conhecimento de manipulação de arrays (ou coleção de ints) é muito básico. Nem sei fazer tudo isso que você falou. Teria uma solução mais simples?

paulomn

entao mais simples so se voce jogasse na tela direto, como voce fez no primeiro codigo que voce posto, fora isso nao ssei uma maneira mais simples hehe

DANIEL35

Beleza, vou tentar fazer desse modo e depois posto o resultado. Obrigado.

Allan_Barcelos

Cara tu podia criar um JTextArea, exemplo:

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class FrameHistorico extends JFrame{

	PanelHistorico ph;
	
	public FrameHistorico(Object cf){
		setTitle("Histórico");
		this.add(ph = new PanelHistorico(this, cf));
		this.setLocationRelativeTo(null);
		this.add(ph);
		this.setLayout(null);
		this.setContentPane(ph);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setVisible(true);
		this.setResizable(false);
		this.pack();
	}
	
	public void fechaJanela(){
		this.setVisible(false);
		this.dispose();
	}
	
	public class PanelHistorico extends JPanel implements ActionListener{
		
		JFrame frame;
		Object c;
		JTextArea ta;
		JButton voltar;
		JScrollPane scrollPane;
		Vector <String> historico = new Vector <String> (1,1);
		
		public PanelHistorico(JFrame f, Object cof){
			c = cof;
			frame = f;
			
			 ta = new JTextArea(7,30);
			 ta.setEditable(false);
			 
			 this.preencheArea();
			 
			 voltar = new JButton("Voltar");
			 voltar.addActionListener(this);
			 
			 scrollPane = new JScrollPane(ta);
			 

	        JPanel buttonPanel = new JPanel();
	        JPanel buttonPanel2 = new JPanel();
	        
	        buttonPanel.setLayout(new GridLayout());
	        buttonPanel2.setLayout(new GridLayout(5,5));
	        
	        
	        buttonPanel.add(scrollPane);
	        buttonPanel2.add(voltar);

	        
	        add(buttonPanel, BorderLayout.PAGE_START);
	        
	        add(buttonPanel2, BorderLayout.CENTER);
		}

		public void preencheArea(){
			historico = c.getHistorico();
			for(int i = 0; i < historico.size(); i++){
				ta.append(historico.get(i)+"\n");
			}
		}
		
		public void actionPerformed(ActionEvent e) {
			
			if(e.getSource() == voltar){
				FramePrincipal fp = new FramePrincipal(c);
				this.setVisible(false);
				this.fecha();
			}
			
		}
		
		public void fecha(){
			frame.dispose();
		}
			
		}

	}
DANIEL35

Qual seria o frame principal? Está apresentando erro na linha 85.

Allan_Barcelos

FramePrincipal era para onde o programa voltava quando clicado em voltar.

Criado 27 de junho de 2010
Ultima resposta 27 de jun. de 2010
Respostas 11
Participantes 3