Erro ao Finalizar Venda

2 respostas
M

Olá pessoal, sou iniciante em Java e encontrei um problema no projeto que estou desenvolvendo para conclusão do curso técnico em informática que é o seguinte: Quando vou realizar uma venda, preciso inserir no banco de dados mysql na tabela venda e item_vendaos dados da venda, mas isto não esta acontecendo. Não sei qual é o erro, pois finaliza a venda mas não insere nenhum dado no banco. Aqui esta o meu código da conexão com o banco:

public class Conexao {
	Connection con;
	private Connection oConn;
	private Statement sStmt;
        private ResultSet rs;

	 public Conexao(){
	}
	/**
	 * Conecta com o banco.
	 * 
	 * @return con conexão estabelecida.
	 */

	public Connection conecta() {
		try{
			Class.forName("com.mysql.jdbc.Driver");
			String url = "jdbc:mysql://localhost:3306/vendas";
			con = DriverManager.getConnection(url, "root", "123456");
			System.out.println("Conexão efetuada com sucesso!!");
			return con;
		}catch(Exception e){
			e.printStackTrace();
			return null;
		}
	}
	public ResultSet rs(String sSQL){
		oConn = conecta();
		try{
			sStmt = oConn.createStatement();
			ResultSet oRS = sStmt.executeQuery(sSQL);
			return oRS;
		}catch(Exception e){
			System.out.println(e.getMessage());
			return null;
		}
	}

	/**
	 * Encerra a conectividade com o banco.
	 * 
	 */
	public void desconecta() {
		try{
			sStmt.close();
			con.close();
		}catch(Exception e){
			System.out.println("Erro ao fechar conexão com banco!!!" + e.getMessage());
		}
	}
Aqui esta a classe que contem os set e get:
public class VendasBean {
    
    /** Creates a new instance of VendasBean */
    public VendasBean() {
    }
    
    private Integer Codigo;
    private Integer CodigoItem;
    private Integer ClientesCodigo;
    private Integer UsuariosCodigo;
    private Integer ProdutosCodigo;
    private Integer VendasCodigo;
    private Date DataVenda;
    private Double ValorTotal;
    private Float QuantidadeVendida;
    private Double ValorItem;

    public Integer getCodigo() {
        return Codigo;
    }

    public void setCodigo(Integer Codigo) {
        this.Codigo = Codigo;
    }

    public Integer getCodigoItem() {
        return CodigoItem;
    }

    public void setCodigoItem(Integer CodigoItem) {
        this.CodigoItem = CodigoItem;
    }

    public Integer getClientesCodigo() {
        return ClientesCodigo;
    }

    public void setClientesCodigo(Integer ClientesCodigo) {
        this.ClientesCodigo = ClientesCodigo;
    }

    public Integer getUsuariosCodigo() {
        return UsuariosCodigo;
    }

    public void setUsuariosCodigo(Integer UsuariosCodigo) {
        this.UsuariosCodigo = UsuariosCodigo;
    }

    public Integer getProdutosCodigo() {
        return ProdutosCodigo;
    }

    public void setProdutosCodigo(Integer ProdutosCodigo) {
        this.ProdutosCodigo = ProdutosCodigo;
    }

    public Integer getVendasCodigo() {
        return VendasCodigo;
    }

    public void setVendasCodigo(Integer VendasCodigo) {
        this.VendasCodigo = VendasCodigo;
    }

    public Date getDataVenda() {
        return DataVenda;
    }

    public void setDataVenda(Date DataVenda) {
        this.DataVenda = DataVenda;
    }

    public Double getValorTotal() {
        return ValorTotal;
    }

    public void setValorTotal(Double ValorTotal) {
        this.ValorTotal = ValorTotal;
    }

    public Float getQuantidadeVendida() {
        return QuantidadeVendida;
    }

    public void setQuantidadeVendida(Float QuantidadeVendida) {
        this.QuantidadeVendida = QuantidadeVendida;
    }

    public Double getValorItem() {
        return ValorItem;
    }

    public void setValorItem(Double ValorItem) {
        this.ValorItem = ValorItem;
Aqui esta classe que contem o metodo registrar venda:
public void cadastrarVenda(VendasBean venda){   
        try {   
                Connection ExConn = banco.conecta();   
                String sSql =  "INSERT INTO VENDAS (UsuariosCodigo, ClientesCodigo, DataVenda)  VALUES(?,?,?)";   
                String sSql2 = "INSERT INTO ITEM_VENDA (ProdutosCodigo, VendasCodigo, QuantidadeVendida, ValorItem, ValorTotal)  VALUES(?,?,?,?,?)";   
                 //Faz consultas em "Vendas"   
                PreparedStatement stmVendas = ExConn.prepareStatement(sSql);     
                //Faz consultas em "Item_Venda"   
                PreparedStatement stmItemVenda = ExConn.prepareStatement(sSql2);       
     
                //Insere em "Vendas"   
                stmVendas.setInt(1,venda.getUsuariosCodigo());   
                stmVendas.setInt(2, venda.getClientesCodigo());                       
                stmVendas.setDate(3,venda.getDataVenda());   
  
                //Insere em "Item_Venda"   
                stmItemVenda.setInt(1,venda.getProdutosCodigo());   
                stmItemVenda.setInt(2, venda.getVendasCodigo());     
                stmItemVenda.setFloat(3, venda.getQuantidadeVendida());       
                stmItemVenda.setDouble(4, venda.getValorItem());   
                stmItemVenda.setDouble(5, venda.getValorTotal());     
  
        }   
        catch (Exception ex) {   
            ex.printStackTrace();   
        }   
        finally{   
                 try{   
                      banco.desconecta();   
                 }   
                 catch(Exception E){   
                       E.printStackTrace();   
                 }   
        }   
    }
Aqui esta a classe principal que tem o botão finalizar venda que contem o sequinte metodo:
private void btFinalizarActionPerformed(java.awt.event.ActionEvent evt) {                                            
        cadastrarVenda();
        
    }                                           

    private void cadastrarVenda(){
        Float quantidade = null;
        Double valor = null;
        
        if (venda.size() == 0){
            JOptionPane.showMessageDialog(this, "Inclua pelo menos um produto!");
        }else{       
            try {
                VendasControl vc = new VendasControl();
                VendasBean venda = new VendasBean();
                SimpleDateFormat formato = new SimpleDateFormat("yyyy-MM-dd");
                java.util.Date d = new java.util.Date();
                Date data = Date.valueOf(formato.format(d));
                    venda.setClientesCodigo(clientes.get(cbClientes.getSelectedIndex()).getCodigo());
                    venda.setUsuariosCodigo(usuarios.get(cbUsuarios.getSelectedIndex()).getCodigo());
                    venda.setProdutosCodigo(produtos.get(cbProdutos.getSelectedIndex()).getCodigo());
                    venda.setVendasCodigo(venda.getVendasCodigo());
                    venda.setQuantidadeVendida(quantidade);
                    venda.setValorItem(valor);
                    venda.setValorTotal(total);
                    venda.setDataVenda(data);
                   
                    vc.cadastrarVenda(venda);
                    JOptionPane.showMessageDialog(this, "Venda cadastrada com sucesso!"); 
         } catch (Exception ex) {
                JOptionPane.showMessageDialog(this, "Erro ao cadastrar Venda!");
            } 
            venda.clear();
            cleartmVendas();
        }
    }
Me ajudem a resolver este problema... Desde ja agradeço ...

2 Respostas

AlissonSchneider

Já viu se não há erro de digitação nas tabelas? Elas são todas em maíusculo no seu BD?

abrass

:wink:

Dyego_Sutil

Dá para tentar colocar em um String a sql que tá gerando e dai você tentar inserir com outro programa no banco, tipo MyDBAC. Assim você sai da dúvido se é o sql o problema.

[]'s

Criado 24 de janeiro de 2011
Ultima resposta 24 de jan. de 2011
Respostas 2
Participantes 3