[Resolvido] passar informacoes do jTextField para uma classe e da classe inserir no banco

7 respostas
K

Boa noite, bom eu to com um probleminha

eu quero pegar o texto que é digitado no campo jTextField no form de cadastro de paciente e passar para uma classe..
eu fiz assim:

Classe com o formulario

package view;

import clinica.Paciente;

/**
 *
 * @author KLAUS
 */
public class JCadPacienteView extends javax.swing.JDialog {

    /**
     * Creates new form JCadPacienteView
     */
    public JCadPacienteView(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
        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() {
    }// </editor-fold>                        

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

    private void jBLimparActionPerformed(java.awt.event.ActionEvent evt) {                                         
        jTPacNome.setText("");
        jTPacCpf.setText("");
        jTPacRg.setText("");
        jTPacSobrenome.setText("");
        jTPacIdade.setText("");
        jTPacBairro.setText("");
        jTPacCidade.setText("");
        jTPacRua.setText("");
        jTPacEstado.setText("");
        jTPacNumero.setText("");
        jTPacSintomas.setText("");
        
    }                                        

    private void jBSalvarActionPerformed(java.awt.event.ActionEvent evt) {                                         
        
        Paciente pac = new Paciente();
       
        
         
        pac.setNome(jTPacNome.getText());
        pac.setCpf(jTPacCpf.getText());
        pac.setRg(jTPacRg.getText());
        pac.setSobreNome(jTPacSobrenome.getText());
        pac.setIdade(jTPacIdade.getText());
        pac.endereco.setBairro(jTPacBairro.getText());
        pac.endereco.setCidade(jTPacCidade.getText());
        pac.endereco.setEstado(jTPacEstado.getText());
        pac.endereco.setNumero(jTPacNumero.getText());
        pac.endereco.setRua(jTPacRua.getText());
        
    }

minha classe paciente ta assim, que seria daonde eu quero acessar o banco e fazer os inserts.. sendo que, onde tem o nome, cpf, sobrenome eu gostaria q ele usa-se o q foi capturado dos textfield

package clinica;

import java.sql.*;

/**
 *
 * @author Klaus
 */
public class Paciente extends Pessoa {
    
    
        public static void main(String[]args)throws SQLException{
        Connection conexao;
        Statement comando;
        ResultSet resultado;
        String sql;
        
        String nome; 
        String sobrenome;
        String cpf;
        
        conexao = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE","projeto","1982");
        comando = conexao.createStatement();
        
        nome = "'Klaus'";
        cpf = "'[telefone removido]'";
        sobrenome = "'Santos'";
        
        sql = "insert into paciente(nome, cpf, sobrenome) values("+nome+","+cpf+","+sobrenome+")";
        comando.executeUpdate(sql);
        
        sql = "select * from paciente";
        resultado = comando.executeQuery(sql);
        
        System.out.println("//----- Depois do Novo Registro --------------//");
        
        while(resultado.next()){
            cpf = resultado.getString("cpf");
            nome = resultado.getString("nome");
            sobrenome = resultado.getString("sobrenome");
            
            System.out.println(cpf +" - "+nome+" - "+sobrenome);
        }
        
        resultado.close();
        comando.close();
        conexao.close();
        
        }
   
}

Desde já grato pela atencao

7 Respostas

dyeimys

Primeiramente me responda algumas perguntas.
[list]Você é novo no Java?[/list][list]Você já estudou Orientação a Objetos?[/list][list]Você está usando alguma função de ‘Arrasta e Solta’ de alguma IDE (Por exemplo: NetBeans)[/list]
Com a respostas destas perguntas ficaria mais fácil de te ajudar, porém se a respostas da primeira e segunda forem negativa posse te dizer que antes estude um pouco pois assim fica mas fácil de você fazer, e com estas respostas o uso de ‘Solta e Arrasta’ pode ficar difícil.

Mas tenho uma lista de tarefas para você fazer que pode te ajudar
[list]Crie classes de Pessoa e Paciente separado do acesso ao banco[/list][list]Crie um formulário que terá os dados e com os dados você cria uma instancia do objeto que você quer colocar no banco[/list]Crie uma classe especial para acessar o banco onde algum método recebe uma instancia do que voce quer colocar no Banco[list]

Para você pegar os dados do formulário você terá que usar os eventos do java (Por exemplo - ava.awt.event.ActionEvent) você já usa ele no seu projeto

Se eu falei alguma besteira aqui peço que me corrijam

K

dyeimys:
Primeiramente me responda algumas perguntas.
[list]Você é novo no Java?[/list][list]Você já estudou Orientação a Objetos?[/list][list]Você está usando alguma função de ‘Arrasta e Solta’ de alguma IDE (Por exemplo: NetBeans)[/list]
Com a respostas destas perguntas ficaria mais fácil de te ajudar, porém se a respostas da primeira e segunda forem negativa posse te dizer que antes estude um pouco pois assim fica mas fácil de você fazer, e com estas respostas o uso de ‘Solta e Arrasta’ pode ficar difícil.

Mas tenho uma lista de tarefas para você fazer que pode te ajudar
[list]Crie classes de Pessoa e Paciente separado do acesso ao banco[/list][list]Crie um formulário que terá os dados e com os dados você cria uma instancia do objeto que você quer colocar no banco[/list]Crie uma classe especial para acessar o banco onde algum método recebe uma instancia do que voce quer colocar no Banco[list]

Para você pegar os dados do formulário você terá que usar os eventos do java (Por exemplo - ava.awt.event.ActionEvent) você já usa ele no seu projeto

Se eu falei alguma besteira aqui peço que me corrijam

1 - sim
2 - estou estudando agora nesse periodo na faculdade, esse é meu projeto para entregar na segunda nota
3 - netbeans

dyeimys

Bom meu caro amigo, é como eu disse
[list]Crie classes de Pessoa e Paciente separado do acesso ao banco[/list][list]Crie um formulário que terá os dados e com os dados você cria uma instancia do objeto que você quer colocar no banco[/list][list]Crie uma classe especial para acessar o banco onde algum método recebe uma instancia do que voce quer colocar no Banco[/list]

Na questão do formulário eu te oriento a não usar o ‘Arrasta e Solta’, porém se realmente for usar.
Você vai no botão que vai fazer a gravação clica com (botão auxiliar do mouse)/eventos/action/ActionPerformed[…]
e logo aparecerá este método e você adiciona estes termos

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        // Pega todos os campos e coloca em variaveis
       String nome = textField_Nome.getText();
       String sobreNome= textField_SobreNome.getText();
       String cpf= textField_cpf.getText();
       //Cria uma nova pessoa
       Pessoa  pessoa = new Pessoa(nome, sobreNome,cpf);
       Vai ao metodo no acesso ao banco (metodo estatico neste caso aqui - Usa referencia a Classe ao invés de Objeto)
       AcessoAoBanco.adicionaPessoa(pessoa);
    }

Este metodo na Classe AcessoAoBanco pode ser algo neste sentido

public class AcessoAoBanco{
      public static boolean adicionaPessoa(Pessoa pessoa){
               String sql = "INSERT INTO `cadPessoa` (`nome`, `sobreNome`, `cpf`) VALUES ('+"pessoa.getNome()"+', '+"pessoa.getSobreNome()"+', '+"pessoa.getCpf()"+')";
               return statement.executeUpdate(sql);
      }
}

Porém está ai mais ou menos como deve ser feito, mais uma vez eu acho que você deveria fazer a interface na bruta, pois como você está começando seria melhor para seu entendimento de como funciona o Swing no java

Acho que assim posso dar uma luz para você, de como iniciar.
Bons estudos

K

tentei fazer aqui ficou assim:

classe pessoa

package clinicateste;

/**
 *
 * @author KLAUS
 */
public class Pessoa {
    
    private String nome;
    private String sobreNome;
    private String cpf;
    private String endereco;

    public String getCpf() {
        return cpf;
    }

    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    public String getEndereco() {
        return endereco;
    }

    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getSobreNome() {
        return sobreNome;
    }

    public void setSobreNome(String sobreNome) {
        this.sobreNome = sobreNome;
    }

    
    
    
    
}

classe de acesso ao banco

package clinicateste;

import java.sql.*;

/**
 *
 * @author KLAUS
 */
public class AcessoAoBanco {
    
    
    
    public static int adicionaPessoa(Pessoa pessoa) throws SQLException{ 
        
        Statement comando;
        Connection conexao;
        ResultSet resultado;
        String sql;
        
        String paciente;
        String sobrenome;
        String cpf;
        
        conexao = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE","projeto","1982");
        comando = conexao.createStatement();
        
        sql = "INSERT INTO paciente (nome, sobrenome, cpf, bairro) VALUES ("+pessoa.getNome()+","+pessoa.getSobreNome()+","+pessoa.getCpf()+","+pessoa.getEndereco()+")";  
               
        return comando.executeUpdate(sql);  
        
      }

    
}

classe de formulario a parte do evento do butao salvar

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        
        Pessoa pessoa = new Pessoa();
        
       pessoa.setNome(textField_Nome.getText());
       pessoa.setSobreNome(textField_SobreNome.getText());
       pessoa.setCpf(textField_Cpf.getText());
       pessoa.setEndereco(textField_Endereco.getText());
       
        try {
            AcessoAoBanco.adicionaPessoa(pessoa);
        } catch (SQLException ex) {
            System.out.println(ex);
        }
        
        
    }

Quando eu executo acontece o seguinte erro:

java.sql.SQLSyntaxErrorException: ORA-00984: coluna não permitida aqui

dyeimys

Neste caso você tem que verificar seu SQL ver se a sintaxe está correta, os nomes dos campos corretos e tals…
Tem um tópico aqui no Guj com este mesmo problema de uma lida nele, ele esta resolvido então pode ser o seu problema talvez:
http://www.guj.com.br/java/197519-ajuda-para-utilizar-o-executeupdate-resolvido#991239
Abrasss. :stuck_out_tongue:

K

Valeu cara, era as aspas simples nas strings

agora é só rachar o coco para mostrar os dados cadastrados em um frame

dyeimys

Por favor coloque [Resolvido] no seu tópico!

Criado 9 de junho de 2012
Ultima resposta 9 de jun. de 2012
Respostas 7
Participantes 2