Ajuda para resolução de uma Duvida

5 respostas
rhoribe

Ola pessoal ..
Venho por meio deste , solicitar um ajuda para resolver o meu problema, sou iniciante em programação java e estou fazendo alguns teste em casa para entender a liguagem.. fiz um exqueminha basico para cadastrar um nome e uma senha mas estou com alguns erros ao tentar cadastrar no banco de dados MySQL , os dados não são cadastrados no banco, mas consigo me conectar, qdo tento cadastrar um dados aparece uma tupla em branco no bd, ai descobri tb que pelo meus codigos não estao sendo capturados os campos JTextField ja tentei varias dicas que encontrei na net e nenhum resolveu o meu problema . peço para que algume me de um luz.. pois ta dificil... para mim .. abaixo segue os arquivos .

Codigo para Confecção da Tela

import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.text.MaskFormatter;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author rhoribe
 */
public class Grafico extends JFrame {
private JLabel nome;
private JLabel senha;
protected JPanel panel;
protected JTextField tfnome;
protected JFormattedTextField tfsenha;
protected JButton b1;
private MaskFormatter m1;
    private LayoutManager GridBagLayout;

public Grafico(){
    setTitle("BD");
    pack();
    setVisible(true);
    setBounds(15,20,800,600);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    panel = new JPanel();
    add(panel);
    nome = new JLabel("Nome:");
    panel.add(nome);
    tfnome = new JTextField(30);
    panel.add(tfnome);
    senha = new JLabel("Senha: ");
    panel.add(senha);
    try{
    m1 = new MaskFormatter("######");
    }catch(Exception e){

    }
    tfsenha = new JFormattedTextField(m1);
    panel.add(tfsenha);
    b1 = new JButton("Testa");
    panel.add(b1);
    }
 public void Botao (ActionListener e){
    b1.addActionListener(e);
}

}

Codigo da parte Logica

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author rhoribe
 */
public class Controller extends Grafico {

    private Modelo model ;
    private String nome;
    private int senha;

   public  Controller(){
    
       super.Botao(new Eventos());
       model = new Modelo();
       model.setNome(tfnome.getText());
       model.setSenha(String.valueOf(tfsenha.getValue()));
         }
   
class Eventos implements ActionListener{
        public void actionPerformed(ActionEvent e) {
                       if(e.getSource() == b1){
                        model.addCliente();
                        System.out.printf("Resp :", model.getNome());
                  }
        }
    }
}

Codigo manipulacão dos dados

import java.sql.SQLException;
import java.sql.Statement;

public class Modelo{
private String nome;
private String senha;
private Connectar conn;

    /**
     * @return the nome
     */
    public String getNome() {
        return nome;
    }

    /**
     * @param nome the nome to set
     */
    public void setNome(String nome) {
        this.nome = nome;
    }

    /**
     * @return the senha
     */
    public String getSenha() {
        return senha;
    }

    /**
     * @param senha the senha to set
     */
    public void setSenha(String senha) {
        this.senha = senha;
    }

public void addCliente(){
  String inCli;
  conn = new Connectar();
  String nome;
  String senha;
  nome = getNome();
  senha = getSenha();
  inCli = "INSERT INTO PESSOAS (nome,senha) VALUES (nome,senha)";
  conn.conecta();
  try{
        Statement st = conn.con.createStatement();
        st.executeUpdate(inCli);
        st.close();
         }catch(SQLException e){
             e.printStackTrace();
            }
 conn.disconnect();
}
}
Codigo de conexão
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author RHORIBE
 */
public class Connectar {
    boolean status;
    Connection con = null;
    String url;
    String user;
    String pass;
public Connectar(){
    status = false;
    url = "jdbc:mysql://localhost:3306/teste";
    user = "rhoribe";
    pass = "rh1908";
}
public void conecta() {
    try{
    Class.forName("com.mysql.jdbc.Driver");
    con = DriverManager.getConnection(url,user,pass);
    status = true;
    System.out.println("A conexão foi um sucesso");
        }catch(ClassNotFoundException e){
            System.out.println("Classe não encontrada !");
            e.printStackTrace();
        }
    catch(SQLException e) {
         System.out.println("SQL Exception... Não conectado");
         e.printStackTrace();
     }
}
public void disconnect(){
     try {
         con.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;
   }
/*public static void main(String[] args) throws SQLException{
     new Connectar().conecta();
}**/
}
:?:

5 Respostas

Filipe_Chagas

Amigo, não analisei a fundo o seu código. Mas na primeira passagem de olho detectei um erro no seu sql de inclusão:

INSERT INTO PESSOAS (nome,senha) VALUES (nome,senha)

Você não está passando os valores. Experimente executar isso no banco de dados. Uma tupla em branco será incluída mesmo.

Veja que a maneira que vou te passar não é a melhor, mas como você ainda está iniciando os estudos, lá vai uma solução meaboca pra resolver o seu problema de forma imediata:

import java.sql.SQLException;
import java.sql.Statement;

public class Modelo{
private String nome;
private String senha;
private Connectar conn;

    /**
     * @return the nome
     */
    public String getNome() {
        return nome;
    }

    /**
     * @param nome the nome to set
     */
    public void setNome(String nome) {
        this.nome = nome;
    }

    /**
     * @return the senha
     */
    public String getSenha() {
        return senha;
    }

    /**
     * @param senha the senha to set
     */
    public void setSenha(String senha) {
        this.senha = senha;
    }

public void addCliente(){
  String inCli;
  conn = new Connectar();
  String nome;
  String senha;
  nome = getNome();
  senha = getSenha();
  inCli = "INSERT INTO PESSOAS (nome,senha) VALUES ('" + nome + "','" + senha + "')";
  conn.conecta();
  try{
        Statement st = conn.con.createStatement();
        st.executeUpdate(inCli);
        st.close();
         }catch(SQLException e){
             e.printStackTrace();
            }
 conn.disconnect();
}
}
rhoribe

ola obrigado pela resposta… anoite testarei tal procedimento, minhaoutra duvida é que nâo estou conseguindo capturar valores dos JtextFields fiz alguns teste para ver se ele capturava algo e nâo esta capturando… alguma solução?

T

Para obter um valor de um JTextField você precisa chamar o método “getText()” desse JTextField.

rhoribe

Para obter um valor de um JTextField você precisa chamar o método “getText()” desse JTextField.

Obrigado eu acho que encontrei o meu erro. no momento nâo posso fazer teste mas analisando os cadigos … vi que nao coloquei a função para capturar campos dentro do metod do envento eu acho que pode ser essse o meu erro…

rhoribe

Eu queria uma dica … o jeito que estou organizando os meus codigos estâo ± corretos, eu tava vendo o padrao mvc… mas nâo sei se esta ± correto o jeito que estou fazendo… :?:

Criado 16 de junho de 2009
Ultima resposta 17 de jun. de 2009
Respostas 5
Participantes 3