Jdbc

Feito Galera…

Possuo o seguinte codigo…

[code]
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)
			{
			
			}
	}	
}

}
[/code]

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!!!

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

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…