Como cancelar um input JOption Pane

Eu fiz um insert para o banco de dados e qualquer botão que aperto seja de cancelar, ok ou fechar ele tá inputando no banco, eu gostaria de saber se tem como fazer com que os botoes de fechar e cancelar não inputem os dados casos sejam clicados.

Se alguém puder me ajudar.


try {
			Class.forName("org.firebirdsql.jdbc.FBDriver").newInstance();
			con = DriverManager.getConnection(url, username, password);
			String s= JOptionPane.showInputDialog("Nome de usuário:");
			PreparedStatement p = con.prepareStatement(inserir);
			Date data = new Date(System.currentTimeMillis());    
			p.setString(1,s);   
			p.setString(2,"teste");
			p.setDate(3, new java.sql.Date(data.getTime()));    
			p.executeUpdate();  
			  
			System.out.println("insert realizado com sucesso!");   
			
			}
		catch(Exception ex) {
			JOptionPane.showMessageDialog(null,"Conexão recusada!\nErro no " + ex.getMessage());
			System.exit(1);

ta muito vago essa sua dúvida…vc colocou esse codigo de banco em algum evento dos botões ou evento padrão???

Thiago,

É um evento padrão de input do JOptionPane, no código que fiz, eu faço um try com a conexão com o banco, se ele conectar vai para o input do Joptiopane, aparece a tela de input mas ai qualquer botão que eu aperto ele insere no banco.

Acho que se vc fizer uma verificação na string s se é vazia ou null antes de dar o insert resolve o seu problema.

Vou tentar, obrigado.

Cara deu certo, eu fiz assim:


String s = JOptionPane.ShowInputDialog(null,"Nome do Usuário");
    if (s == null) System.exit(1);
    
    else
    {
        PreparedStatement p = con.prepareStatement(inserir);
	    Date data = new Date(System.currentTimeMillis());    
	    p.setString(1,s);   
	    p.setString(2,"teste");
	    p.setDate(3, new java.sql.Date(data.getTime()));    
	    p.executeUpdate();  
		  
	    System.out.println("insert realizado com sucesso!"); 
    }

Assim eu acho que fica melhor :slight_smile:


String s = JOptionPane.ShowInputDialog(null,"Nome do Usuário");
    if (s != null || !(s.trim().equals("")))
    {
        PreparedStatement p = con.prepareStatement(inserir);
	    Date data = new Date(System.currentTimeMillis());    
	    p.setString(1,s);   
	    p.setString(2,"teste");
	    p.setDate(3, new java.sql.Date(data.getTime()));    
	    p.executeUpdate();  
		  
	    System.out.println("insert realizado com sucesso!"); 
    }

Vlw Markin1.