Problema com evento e ouvinte

3 respostas
Mariana.Vecci

Oii amigos, estou tentando inserir um usuario a partir de uma função sql, ja testei no main e está funcionando,
mas agora fui tentar fazer com que ela funcionasse pelo botão da tela, mas não ta dando certo..
Obrigada!

package swing;

import java.awt.Component;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;

import model.Usuario;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;
import sql.AcessoUsuarioDAO;

public class Usuario_tela extends JFrame implements ActionListener {

	private JPanel contentPane;
	private JTextField textFieldNome_u;
	private JTextField textFieldNick_u;
	private JTextField textFieldEmail_u;
	private JTextField textFieldPass_u;
	
	private JTextField textFieldNome_uA;
	private JTextField textFieldNick_uA;
	private JTextField textFieldEmail_uA;
	private JTextField textFieldPass_uA;
	

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Usuario_tela frame = new Usuario_tela();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public Usuario_tela() {
		setTitle("Usuario");
		setDefaultCloseOperation(Usuario_tela.HIDE_ON_CLOSE);
		setBounds(100, 100, 550, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);

		JLabel lblNome_u = new JLabel("Nome:");
		lblNome_u.setBounds(25, 20, 46, 14);
		contentPane.add(lblNome_u);
		
		JLabel lblNick_u = new JLabel("Nick:");
		lblNick_u.setBounds(25, 50, 63, 14);
		contentPane.add(lblNick_u);
		
		JLabel lblEmail_u = new JLabel("Email:");
		lblEmail_u.setBounds(25, 80, 63, 14);
		contentPane.add(lblEmail_u);
		
		JLabel lblPass_u = new JLabel("Password:");
		lblPass_u.setBounds(25, 110, 63, 14);
		contentPane.add(lblPass_u);

		textFieldNome_u = new JTextField();
		textFieldNome_u.setBounds(134, 20, 86, 20);
		contentPane.add(textFieldNome_u);
		textFieldNome_u.setColumns(10);

		textFieldNick_u = new JTextField();
		textFieldNick_u.setBounds(134, 50, 86, 20);
		contentPane.add(textFieldNick_u);
		textFieldNick_u.setColumns(10);
	
		textFieldEmail_u= new JTextField();
		textFieldEmail_u.setBounds(134, 80, 86, 20);
		contentPane.add(textFieldEmail_u);
		textFieldEmail_u.setColumns(10);
		
		textFieldPass_u = new JTextField();
		textFieldPass_u.setBounds(134, 110, 86, 20);
		contentPane.add(textFieldPass_u);
		textFieldPass_u.setColumns(10);

		JButton btnI = new JButton("Inserir");
		btnI.setForeground(Color.RED);
		btnI.addActionListener(this);
		btnI.setBounds(23, 151, 89, 23);
		contentPane.add(btnI);
		btnI.setName("btnI");
		
		/*alterar*/
		
		JLabel lblNome_uA = new JLabel("Nome:");
		lblNome_uA.setBounds(280, 20, 46, 14);
		contentPane.add(lblNome_uA);
		
		JLabel lblNick_uA = new JLabel("Nick:");
		lblNick_uA.setBounds(280, 50, 63, 14);
		contentPane.add(lblNick_uA);
		
		JLabel lblEmail_uA = new JLabel("Email:");
		lblEmail_uA.setBounds(280, 80, 63, 14);
		contentPane.add(lblEmail_uA);
		
		JLabel lblPass_uA = new JLabel("Nova Password:");
		lblPass_uA.setBounds(280, 110, 100, 14);
		contentPane.add(lblPass_uA);
		
		textFieldNome_uA = new JTextField();
		textFieldNome_uA.setBounds(410, 20, 86, 20);
		contentPane.add(textFieldNome_uA);
		textFieldNome_uA.setColumns(10);

		textFieldNick_uA = new JTextField();
		textFieldNick_uA.setBounds(410, 50, 86, 20);
		contentPane.add(textFieldNick_uA);
		textFieldNick_uA.setColumns(10);
	
		textFieldEmail_uA= new JTextField();
		textFieldEmail_uA.setBounds(410, 80, 86, 20);
		contentPane.add(textFieldEmail_uA);
		textFieldEmail_uA.setColumns(10);
		
		textFieldPass_uA = new JTextField();
		textFieldPass_uA.setBounds(410, 110, 86, 20);
		contentPane.add(textFieldPass_uA);
		textFieldPass_uA.setColumns(10);
		
		JButton btnA = new JButton("Alterar");
		btnA.setForeground(Color.BLUE);
		btnA.addActionListener(this);
		btnA.setBounds(280, 151, 89, 23);
		contentPane.add(btnA);
		btnA.setName("btnA");
		
		JButton btnISQL = new JButton("Função Inserir SQL");
		btnISQL.setForeground(Color.RED);
		btnISQL.addActionListener(this);
		btnISQL.setBounds(23, 200, 200, 23);
		contentPane.add(btnISQL);
		btnISQL.setName("btnISQL");
		
		JButton btnASQL = new JButton("Função Alterar SQL");
		btnASQL.setForeground(Color.BLUE);
		btnASQL.addActionListener(this);
		btnASQL.setBounds(280, 200, 200, 23);
		contentPane.add(btnASQL);
		btnASQL.setName("btnASQL");
	}

	public void actionPerformed(ActionEvent e) {
		Component component = (Component)e.getSource();
		if(component.getName().equals("btnI")) {

			
			String nome_u = textFieldNome_u.getText();
			String nick_u = textFieldNick_u.getText();
			String email_u = textFieldEmail_u.getText();
			String pass_u = textFieldPass_u.getText();

			Usuario usuario = new Usuario(nome_u, nick_u, email_u, pass_u);
			AcessoUsuarioDAO dao = new AcessoUsuarioDAO();

			dao.inserir(usuario);

			JOptionPane.showMessageDialog(null,"Inserido com Sucesso!!");
		}
		else {
			if(component.getName().equals("btnISQL")) {
				
				String nome_u = textFieldNome_u.getText();
				String nick_u = textFieldNick_u.getText();
				String email_u = textFieldEmail_u.getText();
				String pass_u = textFieldPass_u.getText();

				Usuario usuario = new Usuario(nome_u, nick_u, email_u, pass_u);
				AcessoUsuarioDAO dao = new AcessoUsuarioDAO();

				dao.inserir_funcao_SQL(usuario);
				
			JOptionPane.showMessageDialog(null,"Teste");
			}
		}
	} 
	
}
package sql;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import java.util.ArrayList;
import java.util.List;
import model.Usuario;

public class AcessoUsuarioDAO implements UsuarioDAO{

	public void inserir(Usuario u) throws AcessoUsuarioException
	{
		Connection conexao = null;
		PreparedStatement comando = null;
		try
		{
			conexao = Conexao.getConexao();
			String sql = "INSERT INTO Usuario(nome_u, nick_u,email_u,pass_u) VALUES (?, ?, ?, ?)";  
			comando = conexao.prepareStatement(sql);
		    comando.setString(1, u.getNome_u());
			comando.setString(2, u.getNick_u());
			comando.setString(3, u.getEmail_u());
			comando.setString(4, u.getPass_u());
			comando.executeUpdate();
			System.out.println(sql);

		}
		catch(SQLException e)
		{
			throw new AcessoUsuarioException("erro de inserção de Usuario", e);
		}
		finally
		{
			if(conexao != null)
			{
				try
				{
					conexao.close();
					comando.close();
				}
				catch(SQLException e2)
				{
				}
			}
		}
	}
	
	public void inserir_funcao_SQL (Usuario u) throws AcessoUsuarioException 
	{
		String nome_u ="teste";
		String nick_u ="teste";
		String email_u="teste@";
		String pass_u="teste";
		int pass_c;
		
		Connection conexao = null;
		CallableStatement cstmt = null;
		try 
		{
			conexao = Conexao.getConexao();
			cstmt = conexao.prepareCall("{?= call inserir_usuario(?,?,?,?)}");                 
//            
            cstmt.registerOutParameter (1, Types.INTEGER);
            cstmt.setString(2,nome_u);
            cstmt.setString(3,nick_u);
            cstmt.setString(4,email_u);
            cstmt.setString(5,pass_u);
            
            cstmt.executeUpdate();
            
           pass_c = cstmt.getInt(1);            
            
		}
		
		catch(SQLException e)
		{
			e.printStackTrace();
			throw new AcessoUsuarioException("erro de inserção de Usuario", e);
		}
		finally
		{
			if(conexao != null)
			{
				try
				{
					conexao.close();
					cstmt.close(); 
				}
				catch(SQLException e2)
				{
				}
			}
		}
	}
}

beijokas

3 Respostas

JhowTroMundo

Não tá dando certo por que? O ActionPerformed tá sendo chamado? Dá Erro? Excessão?
Mais detalhes.

Mariana.Vecci

Oii, acusa esses erros:

org.postgresql.util.PSQLException: ERRO: sintaxe de entrada é inválida para integer: "teste"

Onde: PL/pgSQL function “inserir_usuario” ao converter valor de retorno para tipo de retorno da função

at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2102)

at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1835)

at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)

at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:500)

at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:388)

at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:330)

at sql.AcessoUsuarioDAO.inserir_funcao_SQL(AcessoUsuarioDAO.java:73)

at swing.Usuario_tela.actionPerformed(Usuario_tela.java:194)

at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)

at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)

at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)

at javax.swing.DefaultButtonModel.setPressed(Unknown Source)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)

at java.awt.Component.processMouseEvent(Unknown Source)

at javax.swing.JComponent.processMouseEvent(Unknown Source)

at java.awt.Component.processEvent(Unknown Source)

at java.awt.Container.processEvent(Unknown Source)

at java.awt.Component.dispatchEventImpl(Unknown Source)

at java.awt.Container.dispatchEventImpl(Unknown Source)

at java.awt.Component.dispatchEvent(Unknown Source)

at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)

at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)

at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)

at java.awt.Container.dispatchEventImpl(Unknown Source)

at java.awt.Window.dispatchEventImpl(Unknown Source)

at java.awt.Component.dispatchEvent(Unknown Source)

at java.awt.EventQueue.dispatchEventImpl(Unknown Source)

at java.awt.EventQueue.access$000(Unknown Source)

at java.awt.EventQueue$1.run(Unknown Source)

at java.awt.EventQueue$1.run(Unknown Source)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)

at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)

at java.awt.EventQueue$2.run(Unknown Source)

at java.awt.EventQueue$2.run(Unknown Source)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)

at java.awt.EventQueue.dispatchEvent(Unknown Source)

at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.run(Unknown Source)

Exception in thread “AWT-EventQueue-0” sql.AcessoUsuarioException: AcessoUsuarioException: erro de inserção de Usuario

at sql.AcessoUsuarioDAO.inserir_funcao_SQL(AcessoUsuarioDAO.java:82)

at swing.Usuario_tela.actionPerformed(Usuario_tela.java:194)

at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)

at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)

at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)

at javax.swing.DefaultButtonModel.setPressed(Unknown Source)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)

at java.awt.Component.processMouseEvent(Unknown Source)

at javax.swing.JComponent.processMouseEvent(Unknown Source)

at java.awt.Component.processEvent(Unknown Source)

at java.awt.Container.processEvent(Unknown Source)

at java.awt.Component.dispatchEventImpl(Unknown Source)

at java.awt.Container.dispatchEventImpl(Unknown Source)

at java.awt.Component.dispatchEvent(Unknown Source)

at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)

at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)

at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)

at java.awt.Container.dispatchEventImpl(Unknown Source)

at java.awt.Window.dispatchEventImpl(Unknown Source)

at java.awt.Component.dispatchEvent(Unknown Source)

at java.awt.EventQueue.dispatchEventImpl(Unknown Source)

at java.awt.EventQueue.access$000(Unknown Source)

at java.awt.EventQueue$1.run(Unknown Source)

at java.awt.EventQueue$1.run(Unknown Source)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)

at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)

at java.awt.EventQueue$2.run(Unknown Source)

at java.awt.EventQueue$2.run(Unknown Source)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)

at java.awt.EventQueue.dispatchEvent(Unknown Source)

at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.run(Unknown Source)

Caused by: org.postgresql.util.PSQLException: ERRO: sintaxe de entrada é inválida para integer: "teste"

Onde: PL/pgSQL function “inserir_usuario” ao converter valor de retorno para tipo de retorno da função

at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2102)

at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1835)

at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)

at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:500)

at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:388)

at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:330)

at sql.AcessoUsuarioDAO.inserir_funcao_SQL(AcessoUsuarioDAO.java:73)

… 37 more
Mariana.Vecci

Olá, mudei uma coisa na funcão do sql, estava reteronado um integer (password) mas é uma varchar, então refiz a função retornando um varchar, mas não dá ainda … rs rs

Criado 11 de junho de 2011
Ultima resposta 11 de jun. de 2011
Respostas 3
Participantes 2