Jdbc

2 respostas
TegE

Feito Galera....

Possuo o seguinte codigo....
package Banco;

import Layout.*;
import Main.*;

import java.sql.*;
import javax.swing.*;
import java.awt.*;

public class CadastrarClientes extends JFrame{

	private int codigo;
	private String data;
	private String nome;
	private int rg;
	private int cpf;
	private String endereco;
	private int cep;
	private String bairro;
	private int telefone;
	private int celular;
	
	public void setCodigo(int codigo) {
       this.codigo = codigo;
	      }

    public int getCodigo() {
       return this.codigo;
	      }
   
   public void setData(String data) {
       this.data = data;
	      }

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

    public String getNome() {
       return this.nome;
	      }	  
    
	public void setRg(int rg) {
       this.rg = rg;
	      }

    public int getRg() {
       return this.rg;
	      }
		  
	public void setCpf(int cpf) {
       this.cpf = cpf;
	      }

    public int getCpf() {
       return this.cpf;
	      }	  
		  
	public void setEndereco(String endereco) {
       this.endereco = endereco;
	      }

    public String getEndereco() {
       return this.endereco;
	      }
		  
	public void setCep(int cep) {
       this.cep = cep;
	      }

    public int getCep() {
       return this.cep;
	      }	  
		  
	public void setBairro(String bairro) {
       this.bairro = bairro;
	      }

    public String getBairro() {
       return this.bairro;
	      }

	public void setTelefone(int telefone) {
       this.telefone = telefone;
	      }

    public int getTelefone() {
       return this.telefone;
	      }

	public void setCelular(int celular) {
       this.celular = celular;
	      }

    public int getCelular() {
       return this.celular;
	      }	  
		  
public void cadastrarClientes()
{

    Connection conexao = null;
	Statement comando = null;
	try
	{
	
	Class.forName("com.mysql.jdbc.Driver");
	
	conexao = DriverManager.getConnection("jdbc:mysql://127.0.0.1/locadora?user=root&password=zerocodetege");
	
	comando = conexao.createStatement();
	
	Statement stmt = conexao.createStatement(); 
	
	String sql = ("insert into clientes (id,data,nome,rg,cpf,endereco,cep,bairro,telefone,celular) values ('"+getCodigo()+"','"+getData()+"','"+getNome()+"','"+getRg()+"','"+getCpf()+"','"+getEndereco()+"','"+getCep()+"','"+getBairro()+"','"+getTelefone()+"','"+getCelular()+"')"); 	
	stmt.executeUpdate(sql);
	
	String texto = " Cadastro Efetuado com Sucesso!";
	JOptionPane.showMessageDialog(null,texto,"Aviso:",JOptionPane.INFORMATION_MESSAGE,null);	

	    
	}
	
	catch(SQLException e)
		{
			JOptionPane.showMessageDialog(null, "Erro SQL " +e.getMessage() );
		}
	
	catch(ClassNotFoundException e)
		{
			JOptionPane.showMessageDialog(null,"O Drive não foi Encontrado!");
		}

	finally
		{
			try
				{
								
				if (comando !=null)
				comando.close();
				
				if (conexao !=null && !conexao.isClosed())
					conexao.close();
				}	
				catch(SQLException event)
				{
				
				}
		}	
	}
}

Gostaria de saber se isso esta certo quanto ao encapsulamento e quanto a escrita do codigo...
Tipo assim, esse codigo cadastra um cliente,mas para cadastrar um dependente por exemplo,terei que escrever o metodo de conexao tudo de novo e isso nao e ruim???

Abraço!!!

2 Respostas

S

Creio que está correto quanto ao encapsulamento. Uma vez um professor me disse que nada mais natural que um objeto saber “se gravar num banco”, mas não sei se isso é 100% correto. Ou ele o grava ou outro o fara por ele :roll:

Melhor alguém mais experiente julgar isto :wink:

Abraço

s4nchez

Sim, repetir o código é ruim. Sugiro que você crie a segunda classe que usa o mesmo trecho de código depois se pergunte: Como elimino esse código duplicado? Refatore o código e extraia a parte duplicada para uma classe responsável apenas por esse comportamento que é compartilhado pelas duas classes.

Ps.: Quando refatorar aproveita e tenta remover o uso de classes de interface com o usuário (JOptionPane). Vai te salvar bastante dor de cabeça no futuro…

Criado 6 de abril de 2008
Ultima resposta 6 de abr. de 2008
Respostas 2
Participantes 3