Erro ao tentar inserir no BD "RESOLVIDO!"

4 respostas
P
Estou estudando e criando um controle de contas pessoais, mas estou tendo problemas, fiz as seguintes classes: MysqlBD.java
package BD;

/** @author pcjardim */
// Classe para conectar com MySQL

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class MysqlBD {
    //Declarando as variáveis públicas
    public String host;
    public Connection conn = null;
    public boolean status;
    // fim das declarações

    public MysqlBD(String hosttmp){
        host = hosttmp;
        status = false;
    }

    public void connect(){
        try{
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection(host);
            status = true;
            System.out.println("A conexão foi um sucesso!");
        }
        catch(ClassNotFoundException e){
            System.out.println("Excessão Classe não encontrada!");
            e.printStackTrace();
        }
        catch(SQLException e){
            System.out.println("SQL Exception... Não conectado!");
            e.printStackTrace();
        }
    }

    public void disconnect(){
        try{
            conn.close();
            status = false;
            System.out.println("Conexão Fechada!");
        }
        catch(SQLException erro){
            System.out.println("Erro no ferchamento da conexão!");
            //erro.printStackTrace();
        }
    }

    public boolean isconnected(){
        return status;
    }
}
MysqlQuery.java
package BD;

/** @author pcjardim */
// Classe para conectar com MySQL

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.SQLException;

public class MysqlQuery {
    // Declarando as variáveis públicas
    public Connection Database = null;
    public boolean status;
    public ResultSet rs;
    public Statement stm;
    private boolean statusreg = true;
    // fim da declaração

    public MysqlQuery(Connection Db){
        try{
            Database = Db;
            stm = Database.createStatement();
            status = false;
        }
        catch(SQLException e){
            e.printStackTrace();
            System.out.println("Erro ao criar Query!");
        }
    }

    public void open(String sql){
        try{
            rs = stm.executeQuery(sql);
            status = true;
        }
        catch(SQLException e){
            status = false;
            System.out.println("Erro ao executar Query!");
            e.printStackTrace();
        }
    }

    public void execute(String sql){
        try{
            stm.execute(sql);
            status = true;
        }
        catch(SQLException e){
            status = false;
            System.out.println("Erro ao executar Query!");
            e.printStackTrace();
        }
    }

    public String fieldbyname(String field){
        String value = null;
        try{
            if (rs.getString(1) != null)
                status = false;
            if (status)
                rs.next();
            value = rs.getString(field);
            status = true;
        }
        catch(SQLException e){
            System.out.println("Fiel invalido!");
        }
        return value;
    }

    public int recordcount(){
        int tot = 0;
        try{
            rs.first();
            do{
                tot++;
            }
            while(rs.next());
        }
        catch(SQLException e){
            status = false;
            System.out.println("Erro ao executar Query!");
            e.printStackTrace();
        }
        return tot;
    }

    public boolean next(){
        boolean retorno = false;
        try{
            if (rs.next())
                retorno = true;
        }
        catch(SQLException e) {
            System.out.println("Erro ao executar Query!");
        }
        return retorno;
    }

    public boolean prev(){
        boolean retorno = false;
        try{
            if(rs.previous())
                retorno = true;
        }
        catch(SQLException e){
            System.out.println("Erro ao executar previous!");
        }
        return retorno;
    }

    public boolean first(){
        boolean retorno = false;
        try{
            if(rs.first())
                retorno = true;
        }
        catch(SQLException e){
            System.out.println("Erro ao executar first!");
        }
        return retorno;
    }

    public boolean last(){
        boolean retorno = false;
        try{
            if(rs.last())
                retorno = true;
        }
        catch(SQLException e){
            System.out.println("Erro ao executar last!");
        }
        return retorno;
    }
}
Cadastro.java
/** @author pcjardim */
package domain;

import javax.swing.JOptionPane;

public class Cadastro {
    private int codigoP, codigoD, codP, codD, tipo;
    private String nome, descricao, mes, ano, obs;
    private double valor;    


    public void cadPessoa(String n){
        this.nome = n;
    }
    public String getPessoa(){
        return nome;
    }

    public void cadDescricao (int t, String d){
        this.tipo = t;
        this.descricao = d;
    }
    public int getTipo(){
        return tipo;
    }
    public String getDescricao(){
        return descricao;
    }

    public void cadPD (int cP, int cD, double v, String m, String a, String o){
        this.codP = cP;
        this.codD = cD;
        this.valor = v;
        this.mes = m;
        this.ano = a;
        this.obs = o;
    }
    public int getcP(){
        return codP;
    }
    public int getcD(){
        return codD;
    }
    public double getValor(){
        return valor;
    }
    public String getMes(){
        return mes;
    }
    public String getAno(){
        return ano;
    }
    public String getObs(){
        return obs;
    }

    public String cadFrame(){
            String nome = JOptionPane.showInputDialog("Digite o nome");
            return nome;
        }
}
MenuFrame.java
/** @pcjardim */

package Main;

import BD.MysqlBD;
import BD.MysqlQuery;
import domain.Cadastro;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ButtonGroup;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

public class MenuFrame extends JFrame {
    
    BD.MysqlBD banco = new MysqlBD("jdbc:mysql://localhost/contaspessoais?user=root&password=");    
    
    private JCheckBoxMenuItem styleItems[]; // itens do menu Font Style
    private JLabel displayJLabel; // exibe texto de exemplo
    private ButtonGroup fontButtonGroup; // gerencia itens do menu Color;
    private ButtonGroup colorButtonGroup; // gerencia itens do menu Color;
    private int style; //utilizado para criar estilos de fontes
    public String a;

    public MenuFrame(final MysqlQuery q){
        super("Controle de Contas Pessoais");

        JMenu fileMenu = new JMenu("Cadastro"); // cria o meu Cadastro
        fileMenu.setMnemonic('C'); // configura o mnemônico como C

        // cria item de menu Pessoas
        JMenuItem aboutItem = new JMenuItem("Pessoas");
        aboutItem.setMnemonic('P'); //configura o mnemônico como P
        fileMenu.add(aboutItem); // adiciona o item Pessoas ao menu Cadastro
        aboutItem.addActionListener(
                new ActionListener(){  // classe interna anônima
                    // Insere a pessoa no BD
                    public void actionPerformed(ActionEvent event){
                        Cadastro cadastro = new Cadastro();
                        cadastro.cadPessoa(cadastro.cadFramePessoa());
                        q.execute("insert into pessoa (nome) values ('"+cadastro.getPessoa()+"')");
                    } // fim do método actionPerformed
                } // fim da classe interna anônima
        );

        JMenuItem exitItem = new JMenuItem("Descrição"); //cria o item descrição
        exitItem.setMnemonic('D'); // configura o mnemônico como D
        fileMenu.add(exitItem); // adiciona o item Descrição ao meu Cadstro
        exitItem.addActionListener(
                new ActionListener(){ //classe interna anônima
                    // Insere a descrição no BD
                    public void actionPerformed(ActionEvent event){
                        Cadastro cadastro = new Cadastro();                        
                        cadastro.cadDescricao(cadastro.cadFrameDescricao());
                        if (cadastro.getDescricao() == 0){
                            q.execute("insert into descricao (tipo, descricao) values ('"+cadastro.getDescricao()+"','Crédito')");
                        }
                        else {
                            q.execute("insert into descricao (tipo, descricao) values ('"+cadastro.getDescricao()+"','Débito')");
                        }
                    } // fim do método actionPerformed
                } // fim da classe interna anônima

        ); // fim da chamada para addAction Listener        

        JMenuBar bar = new JMenuBar(); // cria a barra de menus
        setJMenuBar(bar); // adiciona uma barra de menus ao aplicativo
        bar.add(fileMenu); // adiciona o menu Cadastro à barra de menus
    }
}
Na classe MenuFrame não to conseguindo inserir a linha
query1.execute("insert into pessoa (nome) values ('"+cadastro.getPessoa()+"')");

antes tinha criado a classe Contas.java que seria esse Main q esta dentro do MenuFrame.java, mas ao q me parece não consegue enxergar o query1.
Estou fazendo errado... deve ser de outra forma??? Ah o problema foi depois q começei a mexer com GUI. se puderem me ajudar agradeço...

depois de corrigido criei o main separado:

/** @author 203070 */
package Main;

import domain.Cadastro;
import BD.MysqlQuery;
import BD.MysqlBD;
import javax.swing.JFrame;

public class Contas {
    public static void main (String[] args){
        MysqlBD banco = new MysqlBD("jdbc:mysql://localhost/contaspessoais?user=root&password=");
        banco.connect(); //conecta ao banco        
        MysqlQuery query1 = new MysqlQuery(banco.conn);       

        Cadastro cadastro = new Cadastro();        

        MenuFrame menuFrame = new MenuFrame(query1); // cria MenuFrame
        menuFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        menuFrame.setSize(500, 200); //configura o tamanho do frame
        menuFrame.setVisible(true); // exibe o frame        
    }
}

4 Respostas

P

Resolvi Galera! Obrigado.

UMC

edita o tópico e coloca como resolvido!
vlw
abs

P

Editei o código e coloquei resolvido acima… vlw! OBG.

UMC

por nada!
lol é bom ter colocado código!
mais meu me referia a titulo do tópico:
ex:
Erro ao tentar inserir no BD "Resolvido!!"
vlw
abs

Criado 22 de fevereiro de 2010
Ultima resposta 22 de fev. de 2010
Respostas 4
Participantes 2