Pesquisa SQL usando JOptionpane

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:

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();
		}
	}
}

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

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.

[code] 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);
           
            }
      }[/code]

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? :slight_smile:

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.

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

[code] private Conexão a;
private void jmenuemailActionPerformed(java.awt.event.ActionEvent evt) {
try {
a.MostraContatos();

    } catch (SQLException e) {
       JOptionPane.showMessageDialog(null, "Erro");
    }
}  [/code]la no action permomanc do menu o código está desse jeito...nao sei mais o q eu faço.. :S

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(); }

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:

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.

[code]private Conexão a;
private void jmenuemailActionPerformed(java.awt.event.ActionEvent evt) {
try {
a.MostraContatos();

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

[/code]

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?

[code] 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);
                
           
            }
      }[/code]

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)

Troque seu metodo inteiro por esse:

[code]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();
	}
}[/code]

reconstrua o projeto rode e poste ae…

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.

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…

Resolveu?

simplismente nao apareceu nada …só os mesmos erros…

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.

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.