Tutorial Java Swing + Database part2

Continuação do tutorial java swing, https://newbl0g.wordpress.com/2011/02/19/tutorial-java-swing-database/

Capítulo 2 – Criando tela do sistema

Siga os passos abaixo para criar uma tela de cadastro simples:

1º – Clicar com botão direito sobre o pacote ~visual.impl e ir em Novo > Outro… (a ultima opção).

2º – Selecionar a categoria “Formulários GUI Swing” e tipo de arquivo “Formulário JInternalFrame”

3º – Alterar o nome da classe para CadFuncionario

4º – Vamos adicionar os componentes, para passar as informações que o funcionário vai ter nesse momento:

  • Rótulos e caixa de texto com:
  • Nome
  • Endereco
  • CPF
  • Dois botões de opção para o Sexo, Masculino ou Feminino.

Deve ter os componentes como imagem abaixo. (Adicionar da paleta para a tela do projeto)

5º – Agora vamos implementar os botões Limpar e Sair

Clicar com botão direito sobre o botão sair e ir ao menu Events > Action > actionPerformed.

No código é criado um método para criar as ações que o botão vai gerar, adicionar no método o código: this.dispose();

Clicar com botão direito sobre o botão Limpar e ir ao menu Events > Action > actionPerformed.

No método adicionar o código: tfNome.setText(“”);        tfEnd.setText(“”);        tfCPF.setText(“”);

6º – Alterar a classe Telaprincipal para acessar o cadastro de funcionário.

Na parte de projeto da tela principal, clicar na paleta de menus e clicar com botão direito ir ao item adicionar menu.

Alterar o texto para Cadastro e a variável para menuCadastro.

Adicionar ao menu um item de menu, alterar o texto para Funcionario e a variavel para itemFunc.

Adicionar o evento actionPerformed no item de menu.

No método criado precisa chamar a tela de cadastro, mas se já estiver aberta não deve permitir.

Para isso é necessário criar uma variável da tela de cadastro na classe principal. Ex: private CadFuncionario telaCadFuncionario;

No método itemFuncActionPerformed vamos adicionar o seguinte código:

if( (telaCadFuncionario==null) || (!telaCadFuncionario.isVisible()) ){

telaCadFuncionario = new CadFuncionario();

desktopPane.add(telaCadFuncionario);

telaCadFuncionario.setVisible(true);        }

7º – Alterar a classe principal para instanciar a TelaPrincipal, para isso vamos comentar o método principal da TelaPrincial.java.

Coloque os caracteres /* antes do inicio do método puclib static void Main(String args[]) e após coloque */, deve ficar assim:

8º – A classe principal deve chamar a Tela principal com o seguinte código:

TelaPrincipal principal = new TelaPrincipal();

principal.setLocationRelativeTo(null);

principal.setVisible(true);

Pronto, agora podemos rodar o projeto (F6) para testar a aplicação visual.

Capítulo 3 – Criando a classe de negócio

Seguir os passos abaixo para implementar a classe de negócio Funcionário:

1º – O funcionário precisa dos campos, vamos editar a classe e inserir as varáveis Nome, Endereço, CPF e Sexo com visibilidade private.

Vamos refatorar os campos e encapsular para utilizar sempre o padão de programação vigente, para isso clicar com botão direito em um campo

ir ao menu Refatorar > Encapsular Campos…

2º – Agora temos que criar um método publico booleano gravar()

nesse método apenas vamos passar os campos para a classe DAO gravar no banco de dados e na classe DAO apenas vamos montar a estrutura para no próximo capítulo implementar

OBS: o print está com o código que fiz na pressa, hehe, a rigor fica melhor assim:

return dao.gravar(…)

Capítulo 4 – Criando as classes de persistência

Agora vamos implementar as classes de persistência, será necessário duas classes para realizar a ligação do banco de dados.

Uma vou chamar de FabricaConexao e a FuncionarioDAO que ja foi criada, então após criar a classe FabricaConexao (no pacote ~persist.impl, claro) é necessário criar os campos: user, password e driver com visibilidade private e do tipo String.

Atenção: será explicado apenas o simples para a criação dessa classe. O ideal é criar uma classe que faça Gerenciamento da conexão. Devido ao tempo será apenas implementado o método pegarConexao().

O método pegar conexão irá retornar uma classe Connection do pacote java.sql

então a classe deve irá ficar assim:

public class FabricaConexao{

private String driver = “jdbc:h2:~/db/FolhaPgto”;

private String user = “desktop”;

private String pass = “desktop”;

public Connection pegaConexao(){

return DriverManager.getConnection(driver,user,pass);

}

}

….

bom tempo depois, voltei para completar o tuto.

a Classe que gerencia conexão

package ~.persistencia.impl;

import java.sql.*;
/**
*
* @author Paulo.Mariano
*/
public class GerenciaConexao {

private static String user = “desktop”;
private static String pass = “desktop”;
private static String url = “jdbc:derby://localhost:1527/FOLHAPGTO”;

public static void fechaConexao(Connection con)
{
try{
if(con != null){con.close();}
} catch (SQLException ex) {
System.out.println(“erro”+ex);
}

}

public static void fechaConexao(Connection con,PreparedStatement ps)
{
try{
if(ps != null){ps.close();}

if(con != null){con.close();}
} catch (SQLException ex) {
System.out.println(“erro”+ex);
}

}

public static void fechaConexao(Connection con,PreparedStatement ps,
ResultSet rs) {
try{
if(rs != null){rs.close();}

if(ps != null){ps.close();}

if(con != null){con.close();}
} catch (SQLException ex) {
System.out.println(“erro”+ex);
}
}

public static void fechaConexao(Connection con,Statement st,
ResultSet rs) {
try{
if(rs != null){rs.close();}

if(st != null){st.close();}

if(con != null){con.close();}
} catch (SQLException ex) {
System.out.println(“erro”+ex);
}
}

public static Connection pegaConexao() {
try {
return DriverManager.getConnection(url, user, pass);
} catch (SQLException ex) {
System.out.println(“erro”+ex);
}
}

}

>>> agora a classe DAO e a implementacao

package br.com.conexao;

import java.sql.*;

public class Dao {

private Connection con;
private Statement stm;

/**
* Construtor, por padrão cria conexão com o banco MySql.
* @author Rogério Figueiredo.
*/
public Dao() {
this.con = new Conexao().getConexao();
}

/**
* <b>CathoDao</b> Método construtor
* @param servidor Passar o endereço do servidor ex: internomaster.devel
* @param porta Passar a porta ex: 9999
* @param usuario Passar o usuário que tem acesso ao servidor ex: dev_roger
* @param senha Passae a sua senha ex: 157567
* @author Rogério Figueiredo.
*/
public Dao(String servidor,String porta,String usuario, String senha) {

this.con = new Conexao(servidor, porta,usuario, senha).getConexao();

}

/**
* Executa um comando de seleção e retorna o resultado.
* @param dao – Passe a Dao.
* @param query – Passe a instrução sql.
* @return – Retorna o resultado.
* Lembrando que se sua conexão for ODBC o nome da tabela do select deve ser o nome da planilha (Ex.: Plan1) e não do arquivo xlsx
*             E na consulta SQL o nome da tabela está entre colchetes e o nome terminado por $
*             Ex.: Select * From [Plan1$]
* @author Rogério Figueiredo.
*/
public ResultSet executarSelect(Dao dao, String query) {
try {
stm = dao.con.createStatement();
return stm.executeQuery(query);
} catch (SQLException e) {
return null;
}

}

/**
* <b>CathoDao</b> * Método construtor, cria Conexão ODBC
*
* @param driverODBC
*            Informe o driver ODBC criado. Para criar um ODBC acessando um
*            arquivo do Excel você deve acessar: Painel de Controle –
*            Ferramentas Administrativas – Configurar fontes de dados ODBC
*            – Adicionar – Driver do Microsoft Excel Informar o nome da sua
*            fonte de dados (que é o nome que será passado nesse
*            parâmetro), Informar Versão: Excel 12.0 (para arquivos .xlsx)
*            Selecione na pasta de trabalho o arquivo que você criou com os
*            dados e clique em OK
*            @author Rogério Figueierdo.
*/
public Dao(String driverODBC) {
this.con = new Conexao(driverODBC).getConexao();
}

/**
* Usado para fazer um Update no banco.
* @param dao
* @param sql
* Passe o comando sql que irá realizar a alteração.
* @return
* Retorna verdadeiro se ocorreu com sucesso ou falso se deu algum problema.
* @author Rogério Figueiredo
*/
public boolean executarUpdate(Dao dao, String sql){
try
{
stm = dao.con.createStatement();
stm.executeUpdate(sql);
desconectar();
}catch(SQLException e)
{
return false;
}
return true;
}

/**
* Usado para fazer a exclusão de um ou mais registros no banco.
* @param dao
* @param sql
* Passe o comando sql que irá realizar a exclusão.
* @return
* Retorna verdadeiro se ocorreu com sucesso ou falso se deu algum problema.
* @author Rogério Figueiredo
*/
public boolean executarDelete(Dao dao, String sql){
try
{
stm = dao.con.createStatement();
stm.executeUpdate(sql);
desconectar();
}catch(SQLException e)
{
return false;
}
return true;
}

/**
* Usado para fazer inclusão de dados.
* @param dao
* @param sql
* Passe o comando sql que irá realizar a inclusão.
* @return
* Retorna verdadeiro se ocorreu com sucesso ou falso se deu algum problema.
* @author Rogério Figueiredo
*/
public boolean executarInsert(Dao dao, String sql){
try
{
stm = dao.con.createStatement();
stm.executeUpdate(sql);
desconectar();
}catch(SQLException e)
{
return false;
}
return true;
}

public void desconectar() {
try {
if (con!=null)
this.con.close();
if (stm!=null)
this.stm.close();
} catch (Exception e) {
System.out.println(“Problema ao desconectar! ” + e);
System.exit(0);
}
}

public Connection getConexao(){
return con;
}

}

>>> agora entidade funcionario do banco

/*
* Classe para acesso a dados da entidade Funcionario
*/

package appfolhapgto.persistencia.impl;

import appfolhapgto.excecao.FolhaPgtoExcecao;
import appfolhapgto.negocio.BO.FuncionarioBO;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
/**
* @author Paulo.Mariano
*
* Classe criada apartir do seguinte script:
CREATE TABLE app.FUNCIONARIO(
FUN_COD INT,
FUN_NOME VARCHAR(100),
SET_COD INT,
CAR_COD INT,
FUN_ESCOLARIDADE INT,
FUN_SEXO int,
FUN_DATANASCIMENTO VARCHAR(50),
FUN_ESTADOCIVIL INT,
PRIMARY KEY (FUN_COD)
);
*/
public class FuncionarioDAO extends DAO {
public void atualiza(FuncionarioBO bo) throws FolhaPgtoExcecao{
StringBuilder atualiza = new StringBuilder(“UPDATE APP.FUNCIONARIO SET “);
atualiza.append(“FUN_NOME”).append(“='”).append(bo.getNome()).append(“‘,”);
atualiza.append(“CAR_COD”).append(“=”).append(bo.getCodCargo()).append(“,”);
atualiza.append(“SET_COD”).append(“=”).append(bo.getSetor()).append(“,”);
atualiza.append(“FUN_SEXO”).append(“=”).append(bo.getSexo()).append(“,”);
atualiza.append(“FUN_DATANASCIMENTO”).append(“='”).append(bo.getDataNascimento()).append(“‘,”);
atualiza.append(“FUN_NACIONALIDADE”).append(“='”).append(bo.getNacionalidade()).append(“‘,”);
atualiza.append(“FUN_TELEFONEOBS”).append(“= ‘”).append(bo.getTelefoneObs()).append(“‘ WHERE FUN_COD =”).append(bo.getCod());

this.executaSQL(atualiza.toString());
}

public void gravar(FuncionarioBO bo) throws FolhaPgtoExcecao {
try {

StringBuilder insert =
new StringBuilder(
“INSERT INTO APP.FUNCIONARIO ”
+ “(FUN_COD,FUN_NOME,CAR_COD,SET_COD,FUN_ESCOLARIDADE,FUN_SEXO,”
+ “FUN_DATANASCIMENTO,FUN_ESTADOCIVIL,FUN_NOMECONJUGUE,”
+ “FUN_DATANASCIMENTOCONJUGUE,FUN_NOMEMAE,FUN_NOMEPAI,”
+ “FUN_NATURALIDADE,FUN_NACIONALIDADE,FUN_OBSERVACOES,”
+ “FUN_RGNUMERO,FUN_RGDATAEMISSAO,FUN_RGORGEXP,FUN_CPF,”
+ “FUN_CTPS,FUN_PISNUMERO,FUN_PISDATAEMISSAO,FUN_TITULONUMERO,”
+ “FUN_TITULODATAEMISSAO,FUN_TITULOZONA,FUN_TITULOORGEXP,”
+ “FUN_RESERVISTANUMERO,FUN_RESERVISTADATAEMISSAO,FUN_CEP,”
+ “FUN_LOGRADOURO,FUN_BAIRRO,FUN_CIDADE,FUN_ESTADO,FUN_TELEFONE,”
+ “FUN_CELULAR,FUN_TELEFONEOBS) VALUES (”
);
insert.append(bo.getCod()).append(“,'”);
insert.append(bo.getNome()).append(“‘,”);
insert.append(bo.getCodCargo()).append(“,”);
insert.append(bo.getSetor()).append(“,”);
insert.append(bo.getEscolariadade()).append(“,”);
insert.append(bo.getSexo()).append(“,'”);
insert.append(bo.getDataNascimento()).append(“‘,”);
insert.append(bo.getEstadoCivil()).append(“,'”);
insert.append(bo.getTelefoneObs()).append(“‘)”);

this.executaSQL(insert.toString());
} catch (Exception ex) {
StringBuilder mensagem = new StringBuilder
(“Não foi possivel gravar dao”);
mensagem.append(“\ncausa:”).append(ex);
throw new FolhaPgtoExcecao(mensagem.toString());
}
}

public List<FuncionarioBO> getAll() throws FolhaPgtoExcecao{
ResultSet rs = null;
List<FuncionarioBO> lista = new ArrayList();

try{

this.conecta();

rs = this.executaSQLcomRs(“SELECT * FROM APP.FUNCIONARIO”);

while(rs.next()){
FuncionarioBO fun = new FuncionarioBO();

fun.setCod(rs.getInt(“FUN_COD”) );
fun.setNome(rs.getString(“FUN_NOME”));
fun.setCPF(rs.getString(“FUN_CPF”));
fun.setSetor(rs.getInt(“SET_COD”));
fun.setCodCargo(rs.getInt(“CAR_COD”));
fun.setEscolariadade(rs.getInt(“FUN_ESCOLARIDADE”));
fun.setSexo(rs.getInt(“FUN_SEXO”));
fun.setDataNascimento(rs.getString(“FUN_DATANASCIMENTO”));
fun.setEstadoCivil(rs.getInt(“FUN_ESTADOCIVIL”));
lista.add(fun);
}

}catch(Exception e){
StringBuilder mensagem = new StringBuilder
(“Não foi possivel buscar funcionarios”);
mensagem.append(“\ncausa:”).append(e);
throw new FolhaPgtoExcecao(mensagem.toString());
}finally{
this.desconecta(rs);
}

return lista;
}

private final String select =
“SELECT * FROM APP.FUNCIONARIO WHERE”;

public FuncionarioBO getFuncionario(String criterio) throws FolhaPgtoExcecao{
ResultSet rs = null;
StringBuilder busca = new StringBuilder(select);
busca.append(” FUN_NOME LIKE ‘%”).append(criterio).append(“%'”);
FuncionarioBO fun = null;

try{

this.conecta();

rs = this.executaSQLcomRs(busca.toString());

while(rs.next()){
fun = new FuncionarioBO();

fun.setCod(rs.getInt(“FUN_COD”) );
fun.setNome(rs.getString(“FUN_NOME”));
fun.setCPF(rs.getString(“FUN_CPF”));
fun.setCodCargo(rs.getInt(“CAR_COD”));

}

}catch(Exception e){
StringBuilder mensagem = new StringBuilder
(“Não foi possivel buscar funcionarios”);
mensagem.append(“\ncausa:”).append(e);
throw new FolhaPgtoExcecao(mensagem.toString());
}finally{
this.desconecta(rs);
}

return fun;
}

public FuncionarioBO getFuncionario(int cod) throws FolhaPgtoExcecao{
ResultSet rs = null;

StringBuilder busca = new StringBuilder(select);
busca.append(” FUN_COD = “).append(Integer.toString(cod));
FuncionarioBO fun = null;

try{

this.conecta();

rs = this.executaSQLcomRs(busca.toString());

while(rs.next()){
fun = new FuncionarioBO();

fun.setCod(rs.getInt(“FUN_COD”) );
fun.setNome(rs.getString(“FUN_NOME”));
fun.setCPF(rs.getString(“FUN_CPF”));
fun.setSetor(rs.getInt(“SET_COD”));
fun.setCodCargo(rs.getInt(“CAR_COD”));
fun.setEscolariadade(rs.getInt(“FUN_ESCOLARIDADE”));
fun.setSexo(rs.getInt(“FUN_SEXO”));
fun.setDataNascimento(rs.getString(“FUN_DATANASCIMENTO”));
fun.setEstadoCivil(rs.getInt(“FUN_ESTADOCIVIL”));

}

}catch(Exception e){
StringBuilder mensagem = new StringBuilder
(“Não foi possivel buscar funcionarios”);
mensagem.append(“\ncausa:”).append(e);
throw new FolhaPgtoExcecao(mensagem.toString());
}finally{
this.desconecta(rs);
}

return fun;
}

public void excluir(int cod) throws FolhaPgtoExcecao{
StringBuilder sql = new StringBuilder(“DELETE FROM APP.FUNCIONARIO WHERE FUN_COD = “);
sql.append(cod);

this.executaSQL(sql.toString());

}

}

não terminei o post mas quem quiser eu ajudo a prosseguir….

Anúncios

Um comentário em “Tutorial Java Swing + Database part2

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s