O que tem de errado no meu codigo [resolvido]

15 respostas
thayson
O que tem de errado no meu codigo queria apenas cadastrar pais no mysql
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;


public class CadastroPais extends javax.swing.JFrame {



    /** Creates new form CadastroPais */
    public CadastroPais() {
        initComponents();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        edtCodigoPais = new javax.swing.JTextField();
        edtNomePaís = new javax.swing.JTextField();
        btnCadastrar = new javax.swing.JButton();
        btnCancelar = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTable1 = new javax.swing.JTable();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Cadastro do País");

        jLabel1.setText("Codigo do País:");

        jLabel2.setText("Nome do País:");

        edtCodigoPais.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                edtCodigoPaisActionPerformed(evt);
            }
        });

        btnCadastrar.setText("Cadastrar");
        btnCadastrar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnCadastrarActionPerformed(evt);
            }
        });

        btnCancelar.setText("Cancelar");

        jTable1.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Title 1", "Title 2", "Title 3", "Title 4"
            }
        ));
        jScrollPane1.setViewportView(jTable1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(58, 58, 58)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jLabel1)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(edtCodigoPais, javax.swing.GroupLayout.PREFERRED_SIZE, 65, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jLabel2)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(edtNomePaís, javax.swing.GroupLayout.PREFERRED_SIZE, 209, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap(122, Short.MAX_VALUE))
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(82, Short.MAX_VALUE)
                .addComponent(btnCadastrar)
                .addGap(54, 54, 54)
                .addComponent(btnCancelar)
                .addGap(175, 175, 175))
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 371, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(86, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(26, 26, 26)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel1)
                    .addComponent(edtCodigoPais, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel2)
                    .addComponent(edtNomePaís, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(btnCancelar)
                    .addComponent(btnCadastrar))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 34, Short.MAX_VALUE)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 275, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
        );

        pack();
    }// </editor-fold>

    private void edtCodigoPaisActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
     
    }

    private void btnCadastrarActionPerformed(java.awt.event.ActionEvent evt) {
        try {
            // TODO add your handling code here:
            Conexao con = new Conexao();
            con.connect();
            Statement stm = con.conn.createStatement();
            String incluir;

            incluir =("INSERT INTO recibo (Integer CodPais, String NomePais) values (" + "'" +edtCodigoPais + "'," + "'" + edtNomePaís + "')");
            stm.executeUpdate(incluir);
             
        } catch (SQLException ex) {
            Logger.getLogger(CadastroPais.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new CadastroPais().setVisible(true);


            }
        });
    }

    // Variables declaration - do not modify
    private javax.swing.JButton btnCadastrar;
    private javax.swing.JButton btnCancelar;
    private javax.swing.JTextField edtCodigoPais;
    private javax.swing.JTextField edtNomePaís;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable jTable1;
    // End of variables declaration

}





//CLASSE DE CONEXAO COM MYSQL
[code]
import java.beans.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;


public class Conexao {

       //Declarando as variáveis publicas
public String host;
public Connection conn = null;
public boolean status;
// fim da declaração

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


public void connect(){
     try {
         Class.forName("com.mysql.jdbc.Driver");
         conn = DriverManager.getConnection( "jdbc:mysql://localhost/recibo?user=root&password=" );
         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("Fechando a conexão");
         } catch(SQLException erro) {
             System.out.println("Erro no fechamento");
             //erro.printStackTrace();
         }
    }
    public boolean isconnected(){
       return status;
       }

    Statement createStatement() {
        throw new UnsupportedOperationException("Not yet implemented");
    }
}

15 Respostas

S

vc deve corrigi sua string sql.

incluir = ("INSERT INTO recibo (Integer CodPais, String NomePais) values (" + "'" + edtCodigoPais + "'," + "'" + edtNomePaís + "')");

deve ser dessa forma.

incluir = ("INSERT INTO recibo (CodPais, NomePais) values (" + "'" + edtCodigoPais + "'," + "'" + edtNomePaís + "')");
Adelar

Olá,
está faltando você passar a senha na conexão com o banco:

conn = DriverManager.getConnection( "jdbc:mysql://localhost/recibo?user=root&password=" );

deveria ser :

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/recibo?user=root&password=SENHADOBANCO");

onde SENHADOBANCO é a senha do usuário root, neste caso.
Obs.: quando postar código coloque cada um entre as tags Code, que fica mais fácil de ler.

Att.

ViniGodoy

Melhor ainda seria usar o PreparedStatement. Isso evita a necessidade de concatenação, evita que você tenha que se preocupar com aspas simples (pense que seu usuário poderia escrever “USA’s Alaska”), evita também lidar com formatos específicos de data do banco de dados e evita o ataque de SQL Injection.

PreparedStatement stm = con.conn.prepareStatement("INSERT INTO recibo(CodPais, NomePais) VALUES(?, ?)"); stm.setInt(1, Integer.parseInt(edtCodigoPais.getText())); stm.setString(2, edtNomePaís.getText()); stm.executeUpdate();

Outra coisa. Para pegar o texto de um JTextField, use o comando getText() como fiz ali em cima.

thayson

[size=18]
[b]
fiz tudo certo como vocs mandaram !!

mais, creio eu, que nao esta inserindo o país nem o codigo ainda no Mysql , por mais que a conexao esteja feita

…o Banco fica vazio.

[/b][/size]
SAIDA:

run:

A conexão foi um sucesso

Exception in thread AWT-EventQueue-0 java.lang.NullPointerException

at CadastroPais.btnCadastrarActionPerformed(CadastroPais.java:132)

at CadastroPais.access$100(CadastroPais.java:8)

at CadastroPais$2.actionPerformed(CadastroPais.java:53)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)

at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)

at java.awt.Component.processMouseEvent(Component.java:6267)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)

at java.awt.Component.processEvent(Component.java:6032)

at java.awt.Container.processEvent(Container.java:2041)

at java.awt.Component.dispatchEventImpl(Component.java:4630)

at java.awt.Container.dispatchEventImpl(Container.java:2099)

at java.awt.Component.dispatchEvent(Component.java:4460)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)

at java.awt.Container.dispatchEventImpl(Container.java:2085)

at java.awt.Window.dispatchEventImpl(Window.java:2478)

at java.awt.Component.dispatchEvent(Component.java:4460)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
ViniGodoy

Está dando um NullPointerException na linha 132… E isso não tem nada a ver com a query ou o banco.
O que tem nessa linha?

thayson

PreparedStatement stm = con.conn.prepareStatement("INSERT INTO RECIBO (CodPais, NomePais) VALUES(?, ?)"); // linha 132 stm.setInt(1, Integer.parseInt(edtCodigoPais.getText())); stm.setString(2, edtNomePaís.getText()); stm.executeUpdate();

drigo.angelo
con.conn.prepareStatement( ...

Um desses objetos con ou conn pode não ter sido inicializado corretamente…

thayson


De uma olhada na minha Classe Conexao:

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


public class Conexao {

       //Declarando as variáveis publicas
public String host;
public Connection conn;
public boolean status;
// fim da declaração

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


public void connect(){
     try {

         Class.forName("com.mysql.jdbc.Driver");
         Connection conn = DriverManager.getConnection( "jdbc:mysql://localhost/teste?user=root&password=" );
         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("Fechando a conexão");
         } catch(SQLException erro) {
             System.out.println("Erro no fechamento");
             //erro.printStackTrace();
         }
    }
    public boolean isconnected(){
       return status;
       }

   
}
thayson

Aqui to consumindo a classe e tentando cadastrar o Pais no Banco:

private void btnCadastrarActionPerformed(java.awt.event.ActionEvent evt) {                                             
        try {
            // TODO add your handling code here:
            Conexao con = new Conexao();
            con.connect();

 PreparedStatement stm = con.conn.prepareStatement("INSERT INTO teste(CodPais, NomePais) VALUES(?, ?)");
            stm.setInt(1, Integer.parseInt(edtCodigoPais.getText()));
            stm.setString(2, edtNomePaís.getText());
            stm.executeUpdate();
    
          //  con.disconnect();

        } catch (SQLException ex) {
            Logger.getLogger(CadastroPais.class.getName()).log(Level.SEVERE, null, ex);
        }

    }
pmlm

No teu método connect estás a atribuir a tua connection a um novo objecto e não ao da classe.
Essa linha deveria ser conn = DriverManager.getConnection( "jdbc:mysql://localhost/teste?user=root&password=" );

thayson

[quote]No teu método connect estás a atribuir a tua connection a um novo objecto e não ao da classe.
Essa linha deveria ser

conn = DriverManager.getConnection( "jdbc:mysql://localhost/teste?user=root&password=" );

AEEEEEEEEE vlw…agora ta rodando de boa!!

Eu tava colocando assim:

Connection conn = DriverManager.getConnection( "jdbc:mysql://localhost/teste?user=root&password=" );

Certo eh assim:

conn = DriverManager.getConnection( "jdbc:mysql://localhost/teste?user=root&password=" );

vlw a paciencia. Abraço a todos e até a proxima.
Um dia fico bom nisso !!!

:smiley:

drigo.angelo

Agora edite seu primeiro post e muda o título do tópico, coloca [resolvido] antes do título :stuck_out_tongue:

thayson

.

thayson

ok

pedroroxd

E desinstala o netbeans da sua maquina e instala o eclipse.

Criado 6 de fevereiro de 2011
Ultima resposta 7 de fev. de 2011
Respostas 15
Participantes 7