Pesquisa SQL usando JOptionpane

20 respostas
debeka

Oi. Quero saber como fazer uma pesquisa no meu banco de dados e mostrar com JOptionPane…
é o seguinte, depois q alguém salva seus dados, na aplicação tem um menu onde ela pode pesquisar os dados cadastrados.

JOptionPane.showMessageDialog(null, stm.executeUpdate("select * from contatos"));

esse código nao está certo, é só pra vcs entederem…
Se alguém puder ajudar, ficarei grata. :slight_smile:

20 Respostas

ribclauport

Bom dia, é o seguinte fiz um exemplo rápido aqui, pegando a segunda coluna da minha tabela que é o nome do livro e fui adicionando a um
StringBuilder (“para não criar um monte de Strings que são objetos imutáveis”) e ae so exibi…testei aqui e apareceu o Joption Pane com os livros.
Se precisar dos outros campos é so manipular conforme sua necessidade.

package conexao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import javax.swing.JOptionPane;

class Exemplo1 {

	public static void main(String args[]) {

		// A captura de exceções SQLException em Java é obrigatória para usarmos
		// JDBC.
		// Para termos acesso ao objeto con, ele deve ter um escopo mais amplo
		// que o bloco try

		Connection con = null;

		try {
			// Este é um dos meios para registrar um driver
			Class.forName("com.mysql.jdbc.Driver").newInstance();

			// Registrado o driver, vamos estabelecer uma conexão
			con = DriverManager.getConnection(
					"jdbc:mysql://localhost:3306/livraria", "root", "root");
			StringBuilder sb = new StringBuilder();
			
			Statement stm = con.createStatement();  
			ResultSet rs = stm.executeQuery("SELECT * from livro");
			while (rs.next()) {
				sb.append(rs.getString(2)+"\n");
				
			}

			System.out.println(sb);
			JOptionPane.showMessageDialog(null, sb);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
debeka

não deu certo…da p/ ser um código mais simples? tirando esse sb.append(rs.getString(2)+"\n")

ribclauport

Bom o codigo que está ae, eu testei aqui e rodou de boa…

O que não deu certo? Qual o erro?

O codigo está simples poste o erro que eu te ajudo.

debeka
public void MostraContatos() throws SQLException{
                Statement stm = con.createStatement();
                
                ResultSet sr = stm.executeQuery("SELECT nome from contatos");
                while (sr.next()){
                    String Nome = sr.getString("nome");
                    JOptionPane.showMessageDialog(null,Nome);
               
                }
          }
Bom, eu fiz esse código aí, eu queria que fosse parecido com esse? mas não ta dando certo de jeito nenhum..:S ME responde uma pergunta: Quando eu insiro dados no banco, tem q conectar, para ver os dados eu tenho q fazer novamente a conexão? tipo, colocar nesse método? :)
ribclauport

Somente se você der con.close(), No seu método abaixo você está exibindo somente o ultimo nome…, me diga uma coisa o que tá acontecendo com esse
método? ta dando erro? ta aparecendo o que no JoptionPane?

posta ae.

debeka

quando eu clico no menu da aplicação para aparecer os dados da tabela, nem o joption pane aparece,só aparece um monte de erro la em baixo no run… :S

debeka
private Conexão a;
    private void jmenuemailActionPerformed(java.awt.event.ActionEvent evt) {                                           
        try {
            a.MostraContatos();
           
        } catch (SQLException e) {
           JOptionPane.showMessageDialog(null, "Erro");
        }
    }
la no action permomanc do menu o código está desse jeito...nao sei mais o q eu faço.. :S
ribclauport

Muita calma, tudo tem solução, e a linguagem java nos mostra tudo o que precisamos saber no console, pelo menos isso que é o meu chefe me disse no meu primeiro erro em que fui perguntar para ele o que era. Sempre leia o console, la está a informação que você precisa, no começo é difícil, e tudo em inglês, mas ae com o tempo se acostuma, geralmente você pega a exceção e joga no google, e ae ja tem um norte do que ta acontecendo, mas na maioria das vezes o debug resolve, tem que aprender a debugar usando a sua ferramenta, é Netbeans? mas antes de me responder esta pergunta faça o seguinte troque seu catch pelo que eu vou te passar, e copie tudo que sair no console e poste aqui, ok? segue abaixo o código…

troque isso:

} catch (SQLException e) { JOptionPane.showMessageDialog(null, "Erro"); } }

por isso:

catch(Exception e){ e.printStackTrace(); System.out.println("----------causa----------------"); e.getCause(); System.out.println("----------mensagem-------------"); e.getMessage(); }

debeka

Conexão estabelecida java.lang.NullPointerException ----------causa---------------- ----------mensagem------------- at Interface.jmenuemailActionPerformed(Interface.java:131) at Interface.access$100(Interface.java:8) at Interface$2.actionPerformed(Interface.java:62) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) at javax.swing.AbstractButton.doClick(AbstractButton.java:376) at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:833) at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:877) at java.awt.Component.processMouseEvent(Component.java:6504) at javax.swing.JComponent.processMouseEvent(JComponent.java:3321) at java.awt.Component.processEvent(Component.java:6269) at java.awt.Container.processEvent(Container.java:2229) at java.awt.Component.dispatchEventImpl(Component.java:4860) at java.awt.Container.dispatchEventImpl(Container.java:2287) at java.awt.Component.dispatchEvent(Component.java:4686) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422) at java.awt.Container.dispatchEventImpl(Container.java:2273) at java.awt.Window.dispatchEventImpl(Window.java:2713) at java.awt.Component.dispatchEvent(Component.java:4686) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707) at java.awt.EventQueue.access$000(EventQueue.java:101) at java.awt.EventQueue$3.run(EventQueue.java:666) at java.awt.EventQueue$3.run(EventQueue.java:664) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) at java.awt.EventQueue$4.run(EventQueue.java:680) at java.awt.EventQueue$4.run(EventQueue.java:678) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:677) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105) at java.awt.EventDispatchThread.run(EventDispatchThread.java:90) java.lang.NullPointerException at Interface.jmenuemailActionPerformed(Interface.java:131) at Interface.access$100(Interface.java:8) at Interface$2.actionPerformed(Interface.java:62) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341) ----------causa---------------- ----------mensagem------------- at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) at javax.swing.AbstractButton.doClick(AbstractButton.java:376) at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:833) at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:877) at java.awt.Component.processMouseEvent(Component.java:6504) at javax.swing.JComponent.processMouseEvent(JComponent.java:3321) at java.awt.Component.processEvent(Component.java:6269) at java.awt.Container.processEvent(Container.java:2229) at java.awt.Component.dispatchEventImpl(Component.java:4860) at java.awt.Container.dispatchEventImpl(Container.java:2287) at java.awt.Component.dispatchEvent(Component.java:4686) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422) at java.awt.Container.dispatchEventImpl(Container.java:2273) at java.awt.Window.dispatchEventImpl(Window.java:2713) at java.awt.Component.dispatchEvent(Component.java:4686) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707) at java.awt.EventQueue.access$000(EventQueue.java:101) at java.awt.EventQueue$3.run(EventQueue.java:666) at java.awt.EventQueue$3.run(EventQueue.java:664) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) at java.awt.EventQueue$4.run(EventQueue.java:680) at java.awt.EventQueue$4.run(EventQueue.java:678) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:677) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105) at java.awt.EventDispatchThread.run(EventDispatchThread.java:90) CONSTRUÍDO COM SUCESSO (tempo total: 40 segundos)
está aí… obrigada por tentar me ajudar. :slight_smile:

ribclauport

java.lang.NullPointerException at Interface.jmenuemailActionPerformed(Interface.java:131)

Tem um null Pointer ae no meio da coisa heim…, provavelmente é o objeto con que esta nulo… chame novamente o metodo que devolve a conexão.

java.lang.NullPointerException  
at Interface.jmenuemailActionPerformed(Interface.java:131)

Mude isso ae e poste de novo.

ribclauport
private Conexão a;  
   private void jmenuemailActionPerformed(java.awt.event.ActionEvent evt) {                                             
       try {  
           a.MostraContatos();  
            
       } catch (SQLException e) {  
          JOptionPane.showMessageDialog(null, "Erro");  
       }

voce tem que receber a conexao ae.... onde está o seu método que devolve a conexão? posto o código do metodo que devolve sua conexão...
e ae a gente ve como fica ok?

debeka
public void MostraContatos() throws SQLException, ClassNotFoundException{
              Class.forName("com.mysql.jdbc.Driver");
        try {
            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/contatos.net", "root", "debek");
      System.out.println("Conexão estabelecida");
        
        } 
        catch (SQLException ex) {
           System.out.println("Conexão não estabelecida");
        }
                Statement stm = con.createStatement();
                
                ResultSet sr = stm.executeQuery("SELECT nome from contatos");
                while (sr.next()){
                    String Nome = sr.getString("nome");
                    JOptionPane.showMessageDialog(null,Nome);
                    
               
                }
          }
meu método ficou assim, e aí o erro ficou assim:
java.lang.NullPointerException
----------causa----------------
----------mensagem-------------
	at Interface.jmenuemailActionPerformed(Interface.java:131)
	at Interface.access$100(Interface.java:8)
	at Interface$2.actionPerformed(Interface.java:62)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
	at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
ribclauport

Troque seu metodo inteiro por esse:

public void MostraContatos() throws SQLException, ClassNotFoundException {
		
		Class.forName("com.mysql.jdbc.Driver");
		try {
			Connection con;
			con = DriverManager
					.getConnection("jdbc:mysql://localhost:3306/contatos.net",
							"root", "debek");
			System.out.println("Conexão estabelecida");
			Statement stm = con.createStatement();
	    	ResultSet rs = stm.executeQuery("SELECT nome from contatos");
	    	StringBuilder sb = new StringBuilder();
	    	
	    	 while (rs.next()){   
                  sb.append(rs.getString("nome")+"\n");
                 
             }   
	    	 JOptionPane.showMessageDialog(null,sb.toString());  

		}catch(SQLException e){
			e.printStackTrace();
		}
	}

reconstrua o projeto rode e poste ae...

debeka

refiz… mas agora apareceu esse erro.

java.lang.NullPointerException at Interface.jmenuemailActionPerformed(Interface.java:131) at Interface.access$100(Interface.java:8) at Interface$2.actionPerformed(Interface.java:62) ----------causa---------------- at javax.swing.AbstractButton.fireActionPerformed(----------mensagem------------- AbstractButton.java:2018) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)

eita…eita…esses erros…saõ o teu pior desafio no netbeans.

ribclauport

Literalmente troque pelo método não refaça se não eu não vou saber o que está acontencendo… pela sua saida o catch ainda tem o getcause
e os codigos antigos… simplementes copie e cole o método que te mandei…

ribclauport

Resolveu?

debeka

simplismente nao apareceu nada …só os mesmos erros…

ribclauport

Poste o codigo inteiro de onde voce substitui…
ultima tentativa qualquer coisa passo o email para voce e voce me manda a aplicação da a gente resolve isso de uma vez por todas.

thiago_spdvr

O JOptionPane não tem a finalidade de mostrar todos dos dados de um select, somente mensagens de texto curtas, por exemplo um nome somente.

Debuga sua aplicação pra ver onde exatamente esta acontecendo o erro.

ribclauport

por thiago_spdvr
Debuga sua aplicação pra ver onde exatamente esta acontecendo o erro.

Isso vai ajudar muito você debeka. Aliás quando comecei a trabalhar na área ouvi bastante isso. Mas nunca pensei que veria isso em forum, até pensei que era
me primeiro chefe respondendo.

Sem mais comentários.

Criado 17 de fevereiro de 2012
Ultima resposta 28 de fev. de 2012
Respostas 20
Participantes 3