Evento no botao de gravar dados.....[resolvidooooo]

3 respostas
D

estou tentando gravar dados que sao inseridos em uma tabela segue o código a seguir
antes gravava só um registro e agora ta dando erro de sintaxe o que posso acrescentar neste código pra gravar mais de um registro e resolver este erro?

botao2.addActionListener(new ActionListener() {    
            public void actionPerformed(ActionEvent e) {    
                JTable tabela = new JTable(modelo);   
                //int linha = modelo.getRowCount();     
                 //int col = modelo.getColumnCount();  
                try     
                {  
                //int i = modelo.getRowCount();     
                //int j = modelo.getColumnCount();  
                   Class.forName("org.postgresql.Driver");     
                   Connection con = DriverManager.getConnection ("jdbc:postgresql:TurmaN40","postgres","postgres");     
                System.out.println("Conexao OK");     
                Statement st = con.createStatement();     
               
            	for (int i=0; i < modelo.getRowCount(); i++){
            	for (int j = 0; j < modelo.getColumnCount(); j++){
           
                       //for (int i = 0; i <= modelo.getRowCount();) {  
                ResultSet rs = st.executeQuery("INSERT into VendaProduto (codigo,descricao,qtde,valor,total) values ('"+ 
                		caixa5.getText() + "','" +  
                        caixa6.getText() + "','" + 
                        modelo.getValueAt(i,0)+"','"+     
                        modelo.getValueAt(i,1)+"','"+     
                        modelo.getValueAt(i,2)+"','"+     
                        modelo.getValueAt(i,3)+"','"+     
                        modelo.getValueAt(i,4)+"',"+
                        caixa7.getText() + "','" +  
                        caixa8.getText() + "','" + 
                        caixa9.getText()+"')'");       
                      }  
            	}
                     JOptionPane.showMessageDialog(null,"Gravação realizada com sucesso");      
                    st.close();     
                    con.close();     
                    }catch (Exception e1){     
                    e1.printStackTrace();     
                    return;     
                    }}  
    });

o erro que ocorre é esse

org.postgresql.util.PSQLException: ERRO: erro de sintaxe no fim da entrada
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1591)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1340)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:192)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:452)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:340)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:239)
at EfetuarVenda$2.actionPerformed(EfetuarVenda.java:199)
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)

3 Respostas

D

agora ta dando insert tem mais expressoes que colunas alvo…mais se eu tirar as expressoes ele só grava um registro como faz pra grava todos usando esse codigo?

ganondorfan

Não compreendi o porque de você criar uma JTable na ação do botão.

Procure utilizar PreparedStatement para compilar a Query antes de enviar para o banco.

D

nao to criando uma jtable na ação do botao to criando uma ação pra salvar no botao.......

eu adiciono com o botao ok os dados

e salvo em seguida....todos no banco vou te mandar o código mais completo pra vc ver................

import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.DecimalFormat;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import Modelo.VendaProduto;
//import controle.Utilitarios;

// Ctrl+Shift+F => Formata o código
// Ctrl+A e Ctrl+i => Formata a seleção

public class EfetuarVenda extends JFrame {
	private JLabel rotulo1, rotulo2, rotulo3,rotulo4,rotulo5,rotulo6,rotulo7,rotulo8,rotulo9;
	private JTextField caixa1, caixa2, caixa3,caixa4,caixa5,caixa6,caixa7,caixa8,caixa9;
	private JButton botao1, botao2,botao3,botao4;
	private double total,valor,qtde,soma = 0; 
	private static EntityManagerFactory fabricaDeEntidades = null;

	private static EntityManager gerenciador = null;
	
	  DecimalFormat df= new DecimalFormat(",##0,00");

	public EfetuarVenda(EntityManagerFactory fabricaDeEntidades2, EntityManager gerenciador2) {
		super("Vendas");
		Container tela = getContentPane();

		tela.setLayout(null);
		fabricaDeEntidades=fabricaDeEntidades2;
		gerenciador=gerenciador2;
	        
		rotulo1 = new JLabel("Codigo");
		rotulo2 = new JLabel("Cliente:");
		rotulo3 = new JLabel("Total:");
		rotulo4 = new JLabel("Data:");
		rotulo5 = new JLabel("Código:");
		rotulo6 = new JLabel("Descrição:");
		rotulo7 = new JLabel("Qtde:");
		rotulo8 = new JLabel("Valor:");
		rotulo9 = new JLabel("Total:");

		caixa1 = new JTextField();
		caixa2 = new JTextField();
		caixa3 = new JTextField();
		caixa3.setText("0.00");
		caixa4 = new JTextField();
		caixa5 = new JTextField();
		caixa6 = new JTextField();
		caixa7 = new JTextField();
		caixa8 = new JTextField();
		caixa9 = new JTextField();

		botao1 = new JButton("Ok");
		botao2 = new JButton("Salvar Venda");
		botao3 = new JButton("Calcular Orçamento");
		botao4 = new JButton("Calcular Pagamento");

		// coluna, linha, largura, altura
		rotulo1.setBounds(10, 19, 47, 20);
		caixa1.setBounds(68, 19, 40, 20);

		botao1.setBounds(630,100, 50, 20);
		botao2.setBounds(21, 510, 200, 50);
		botao3.setBounds(230, 510, 200, 50);
		botao4.setBounds(440, 510, 200, 50);

		rotulo2.setBounds(140, 19, 100, 20);
		caixa2.setBounds(190, 19, 232, 20);

		rotulo3.setBounds(530, 50, 70, 60);
		caixa3.setBounds(560, 50, 120, 40);
		
		rotulo4.setBounds(10, 60, 100, 20);
		caixa4.setBounds(68, 60, 179, 20);
		
		rotulo5.setBounds(10,100, 47, 20);
		caixa5.setBounds(68,100, 40, 20);
		
		rotulo6.setBounds(120, 100, 100, 20);
		caixa6.setBounds(190, 100, 180, 20);
		
		rotulo7.setBounds(370, 100, 80, 20);
		caixa7.setBounds(410, 100, 50, 20);
		
		rotulo8.setBounds(460, 100, 50, 20);
		caixa8.setBounds(500,100, 50, 20);
		
		rotulo9.setBounds(550, 100, 50, 20);
		caixa9.setBounds(580, 100, 50, 20);
		
		tela.add(rotulo1);
		tela.add(caixa1);

		tela.add(rotulo2);
		tela.add(caixa2);

		tela.add(botao1);
		tela.add(botao2);
		tela.add(botao3);
		tela.add(botao4);

		tela.add(rotulo3);
		tela.add(caixa3);
		
		tela.add(rotulo4);
		tela.add(caixa4);
		
		tela.add(rotulo5);
		tela.add(caixa5);
		
		tela.add(rotulo6);
		tela.add(caixa6);
		
		tela.add(rotulo7);
		tela.add(caixa7);
		
		tela.add(rotulo8);
		tela.add(caixa8);
		
		tela.add(rotulo9);
		tela.add(caixa9);
		
		final DefaultTableModel modelo;

	    modelo = new 
	    DefaultTableModel();
	    
	    // constrói a tabela
	    JTable tabela = new JTable(modelo);
	    
	    // Cria duas colunas
	    modelo.addColumn("Código");
	    modelo.addColumn("Descrição");
	    modelo.addColumn("Qtde");
	    modelo.addColumn("Valor");
	    modelo.addColumn("Total");
	    
	    JScrollPane scrollPane = new JScrollPane(tabela);
	    scrollPane.setBounds(20, 150, 640, 350);
		tela.add(scrollPane);
		
		botao1.addActionListener(new ActionListener() {     
		            public void actionPerformed(ActionEvent e) {     
		                // Persistir dados     
		                // inclusão de um novo registro
		            	//double total,valor,qtde,soma = 0;     
		                valor=Double.parseDouble(caixa8.getText());     
		                    qtde=Double.parseDouble(caixa7.getText());     
		                    total=(qtde*valor);   
		                    soma+=(qtde*valor);
		                    //Esse + (antes do igual) vai acumular os valores em soma.  
		                    caixa3.setText(""+soma);     
		                    caixa9.setText(""+total);     
		                modelo.addRow(new String [] {caixa5.getText(), caixa6.getText(), caixa7.getText(), caixa8.getText(), caixa9.getText()} );
		                caixa1.setText("");
		                caixa2.setText("");          
		                caixa4.setText("");
		                caixa5.setText("");
		                caixa6.setText("");
		                caixa7.setText("");     
		                caixa8.setText("");   
		                caixa9.setText("");
		            }  
		        });  

		botao2.addActionListener(new ActionListener() {    
            public void actionPerformed(ActionEvent e) {    
                JTable tabela = new JTable(modelo);   
                //int linha = modelo.getRowCount();     
                 //int col = modelo.getColumnCount();  
                try     
                {  
                //int i = modelo.getRowCount();     
                //int j = modelo.getColumnCount();  
                   Class.forName("org.postgresql.Driver");     
                   Connection con = DriverManager.getConnection ("jdbc:postgresql:TurmaN40","postgres","postgres");     
                System.out.println("Conexao OK");     
                Statement st = con.createStatement();     
               
            	for (int i=0; i < modelo.getRowCount(); i++){
            	for (int j = 0; j < modelo.getColumnCount(); j++){
           
                       //for (int i = 0; i <= modelo.getRowCount();) {  
                ResultSet rs = st.executeQuery("INSERT into VendaProduto (codigo,descricao,qtde,valor,total) values ('"+ 
                		caixa5.getText() + "','" +  
                        caixa6.getText() + "','" + 
                        modelo.getValueAt(i,0)+"','"+     
                        modelo.getValueAt(i,1)+"','"+     
                        modelo.getValueAt(i,2)+"','"+     
                        modelo.getValueAt(i,3)+"','"+     
                        modelo.getValueAt(i,4)+"','"+
                        caixa7.getText() + "','" +  
                        caixa8.getText() + "','" + 
                        caixa9.getText()+"')");
                
                JOptionPane.showMessageDialog(null,"Gravação realizada com sucesso");  
                      }  
            	} 
                    st.close();     
                    con.close();     
                    }catch (Exception e1){     
                    e1.printStackTrace();     
                    return;     
                    }}  
    });   
			       
	botao3.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent e) {
			// fecha a janela
			CalculcarOrcamento c = new CalculcarOrcamento(fabricaDeEntidades, gerenciador);
    }
      });
	botao4.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent e) {
			// fecha a janela
			CalcularPagamento c = new CalcularPagamento(fabricaDeEntidades, gerenciador);
    }
      });

// setSize(largura, altura);
setSize(700, 610);
setVisible(true);
setLocationRelativeTo(null);
}

	public static void main(String[] args) {

		fabricaDeEntidades = Persistence
				.createEntityManagerFactory("TurmaN40PostgreSQL");

		gerenciador = fabricaDeEntidades.createEntityManager();

		EfetuarVenda app = new EfetuarVenda(fabricaDeEntidades, gerenciador);
		app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

	}

		}

tabela no banco venda produto

package Modelo;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.swing.table.DefaultTableModel;

@Entity
public class VendaProduto {
@Id
	private int codigo;
	private String descricao;
	private int qtde;
	private double valor;
	private double total;
	public int getCodigo() {
		return codigo;
	}
	public void setCodigo(int codigo) {
		this.codigo = codigo;
	}
	public String getDescricao() {
		return descricao;
	}
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}
	public int getQtde() {
		return qtde;
	}
	public void setQtde(int qtde) {
		this.qtde = qtde;
	}
	public double getTotal() {
		return total;
	}
	public void setTotal(double total) {
		this.total = total;
	}
	public double getValor() {
		return valor;
	}
	public void setValor(double valor) {
		this.valor = valor;
	}
}
Criado 1 de agosto de 2011
Ultima resposta 1 de ago. de 2011
Respostas 3
Participantes 2