Baixe o app para aproveitar ainda mais
Prévia do material em texto
APOSTILA DE PROGRAMAÇÃO ORIENTADA A OBJETOS II JAVA E BANCO DE DADOS Configuração PostgreSQL Selecionar o PostgreSQL pgAdmin III Botão direito em PostgreSQL 9.0 e selecionar a opção Connect. Informar a senha de configuração do PostgreSQL. Depois de identificada a senha o sistema estará pronto para ser utilizado. Para criar um novo Banco de dados basta clicar com o botão direito sobre Databases New Database... Para isso basta selecionar um banco já existente e clicar no botão SQL na barra de atalhos. Na tela Query você irá digitar as instruções desejadas. Para executá-las a instrução deverá clicar no menu Query Execute ou pressionar a tecla F5. ATENÇÃO: Para criar a tabela sempre selecionar o banco antes e depois clicar no botão SQL. Banco criado e alguns dados inseridos. Vamos para o NetBeans! Vamos criar nosso projeto. Para isso faça: 1. Arquivo > Novo Projeto; 2. Escolha categoria: Java. Projeto: Aplicativo Java; 3. Clique em Próximo; 4. Coloque um nome para o projeto – Exemplo: projetoBancodeDados e clique em finalizar; Nosso projeto foi criado. Agora vamos adicionar o driver JDBC para que nossa aplicação consiga se conectar ao Banco de Dados. Para isso: 1. Na aba do Projeto, selecione a opção Bibliotecas e clique no botão Adicionar biblioteca. 2. Vá até o JDBC do PostgreSQL selecione o arquivo .jar 3. Clique no botão Adicionar biblioteca. Pronto. O JDBC já foi adicionado a nossa aplicação. Agora vamos fazer um pouco de código. Nós iremos fazer toda a conexão com banco de dados direto da classe principal que o NetBeans nos forneceu. Escolher o banco de dados: Aba Serviços banco de dados botão direito do mouse Nova Conexão Clicar em OK, depois selecionar Public. PARA O PROJETO (INTERFACE): Clique com o botão direito sobre o projeto Novo Formulário JFrame Criar um formulário JFRAME - menu seguindo o modelo abaixo: PROGRAMAÇÃO NO BOTÃO INSERIR PRODUTO: // botão para abrir o formulário de inserção de produto new inserirProduto().setVisible(true); //mostra o formulário na tela this.setVisible(false); //tira visibilidade do formulário PROGRAMAÇÃO NO BOTÃO CONSULTAR PRODUTO: // botão para mostrar o formulário de consulta new consultaProduto().show(); //mostra o formulário na tela this.hide(); //tira a visibilidade do formulário PROGRAMAÇÃO NO BOTÃO EXCLUIR PRODUTO: // botão para mostrar o formulário de consulta new consultaProduto().show(); //mostra o formulário na tela this.hide(); //tira a visibilidade do formulário PROGRAMAÇÃO NO BOTÃO ATUALIZAR PRODUTO: // botão para mostrar o formulário de consulta new atualizarProduto().show(); //mostra o formulário na tela this.hide(); //tira a visibilidade do formulário PROGRAMAÇÃO DO BOTÃO SAIR: // encerrar a aplicação java System.exit(0); Criar um formulário JFRAME - inserirProduto seguindo o modelo a seguir: IMPORTAÇÕES NECESSÁRIAS PARA A CLASSE (inserirProduto) SER EXECUTADA: import javax.swing.*; import java.sql.*; import projetobancodedados.conexao; DECLARAÇÕES NECESSÁRIAS PARA A CLASSE (inserirProduto): private conexao con; private PreparedStatement statement; private ResultSet resultSet; PROGRAMAÇÃO DO BOTÃO INSERIR: //inserir produto conexao con = new conexao(); try { if (!con.getConnection()) { JOptionPane.showMessageDialog(null, "Falha na conexao, o sistema será fechado!"); System.exit(0); } else { //Cria um statement para podermos mandar um SQL para o banco Statement stmt = con.conn.createStatement(); String sqlinsert = "insert into produto(codigo,descricao,preco,categoria)" + "values (" + jTextField1.getText() + ",'" + jTextField2.getText() + "'," + jTextField3.getText() + ",'" + jTextField4.getText() + "') "; stmt.executeUpdate(sqlinsert); JOptionPane.showMessageDialog(null, "Gravação realizado com sucesso!"); } } catch (Exception erro) { JOptionPane.showMessageDialog(null,"Comando SQL invalido!" + erro.toString()); } PROGRAMAÇÃO DO BOTÃO FECHAR: // botao fechar this.hide(); //tira a visibilidade a tela ativa new menu().setVisible(true); //mostra a tela de menu - jframe Criar um formulário JFRAME - consultaProduto seguindo o modelo a seguir: Para alterar os nomes das colunas do componente JTABLE, selecionar o objeto e clicar na aba Propriedade selecionar a opção MODEL, como mostrar a imagem a seguir: E configurar conforme a tela a seguir: IMPORTAÇÕES NECESSÁRIAS PARA A CLASSE (consultaProduto): import java.sql.*; import java.util.Vector; import java.util.logging.*; import javax.swing.*; import javax.swing.table.DefaultTableModel; import projetobancodedados.conexao; DECLARAÇÕES NECESSÁRIAS PARA A CLASSE (consultaProduto): //declarações das variaveis private conexao con; private PreparedStatement statement; private ResultSet resultSet; String sql; CRIAÇÃO DO MÉTODO PARA CONSULTAR OS REGISTROS: //metodo para consultar produtos public void consultar(){ conexao con = new conexao(); if (!con.getConnection()) { JOptionPane.showMessageDialog(null, "Falha na conexao, o sistema será fechado!"); System.exit(0); } else { try { //Cria um statement para podermos mandar um SQL para o banco Statement stmt; stmt = con.conn.createStatement(); //Codigo em SQL para filtrar os dados da tabela PRODUTO sql = "SELECT * FROM produto ORDER BY codigo"; //Executa a instrução em SQL resultSet = stmt.executeQuery(sql); //Verifica se a tabela CLIENTE possui algum registro if (resultSet == null) { return; } //Variavel que irá receber os valores cadastrados na tabela PRODUTO ResultSetMetaData rsmd; rsmd = resultSet.getMetaData(); //Construtor que irá controlar o numero de colunas Vector vetColuna = new Vector(); for (int i = 0; i < rsmd.getColumnCount(); i++) { vetColuna.add(rsmd.getColumnLabel(i + 1)); } //Construtor que irá controlar o numero de linhas Vector vetLinhas = new Vector(); //Verifica se possui um proximo registro while (resultSet.next()) { Vector vetLinha = new Vector(); for (int i = 0; i < rsmd.getColumnCount(); i++) { vetLinha.add(resultSet.getObject(i + 1)); } //Insere as linhas na tabela do formulario vetLinhas.add(vetLinha); //Desenha a tabela com os valores de linha e coluna referentes a tabela CLIENTE jTable1.setModel(new DefaultTableModel(vetLinhas, vetColuna)); }//Tratamento de erros } catch (SQLException ex) { Logger.getLogger(consultaProduto.class.getName()).log(Level.SEVERE, null, ex); } } con.close(); } PROGRAMAÇÃO DO BOTÃO CONSULTAR PRODUTO: //chama o método consultar da classe consultar(); PROGRAMAÇÃO DO BOTÃO EXCLUIR PRODUTO: // EXCLUSAO PRODUTO conexao con = new conexao(); if (!con.getConnection()) { JOptionPane.showMessageDialog(null, "Falha na conexao, o sistema será fechado!"); System.exit(0); } else { try { //Cria um statement para podermos mandar um SQL para o banco Statement stmt; stmt = con.conn.createStatement(); int[] l = jTable1.getSelectedRows();//captura as linhas selecionadas //pega o DefaultTableModel da tabela javax.swing.table.DefaultTableModel dtm = (javax.swing.table.DefaultTableModel) jTable1.getModel(); //Variavel que ira receber o numero da linha selecionada no JTABLE String valorSelecionado = jTable1.getValueAt(jTable1.getSelectedRow(), jTable1.getSelectedColumn()).toString(); //Tela de confirmação para excluir o registro selecionado int status = JOptionPane.showConfirmDialog(null, "Deseja excluir o item " + valorSelecionado + "?", "Atenção", JOptionPane.YES_NO_OPTION); //Verifica se o botão clicado na tela de confirmação foi o YES if (status == JOptionPane.YES_OPTION) { //Codigo em SQL para excluir o registro selecionado sql = "DELETE FROM produto WHERE codigo = " + valorSelecionado; //Executa a instrução em SQL stmt.executeUpdate(sql); //Mostra uma tela de informação que o registro foi excluído do banco JOptionPane.showMessageDialog(null, "Excluído com sucesso"); } //Tratamento de erros } catch (SQLException ex) { Logger.getLogger(consultaProduto.class.getName()).log(Level.SEVERE, null, ex); } } consultar(); con.close(); PROGRAMAÇÃO DO BOTÃO SAIR: // fecha a tela e volta para o menu principal this.hide(); new menu().show(); Criar um formulário JFRAME - atualizarProduto seguindo o modelo a seguir: IMPORTAÇÕES NECESSÁRIAS PARA A CLASSE (atualizarProduto): import javax.swing.*; import java.sql.*; import projetobancodedados.conexao; DECLARAÇÕES NECESSÁRIAS PARA A CLASSE (atualizarProduto): //declarações das variaveis private conexao con; private PreparedStatement statement; private ResultSet resultSet; String sql; PROGRAMAÇÃO DO BOTÃO ATUALIZAR PRODUTO: // atualizar produto: conexao con = new conexao(); try { if (!con.getConnection()) { JOptionPane.showMessageDialog(null, "Falha na conexao, o sistema será fechado!"); System.exit(0); } else { //Cria um statement para podermos mandar um SQL para o banco Statement stmt = con.conn.createStatement(); //Codigo em SQL para atualizar os registros atraves dos valores existentes nos TextFields sql = "update produto set descricao = '" + jTextField2.getText() + "', preco=" + jTextField3.getText() + ", categoria = '" + jTextField4.getText() + "' where codigo = " + jTextField1.getText(); stmt.executeUpdate(sql); //Tela de confirmação dos dados atualizados JOptionPane.showMessageDialog(null, "Registro atualizado com sucesso!"); } } catch (Exception erro) { JOptionPane.showMessageDialog(null, "Comando SQL invalido !" + erro.toString()); } PROGRAMAÇÃO DO BOTÃO FECHAR: this.hide(); new menu().show(); INSERIR UM NOVA CLASSE CHAMADA: conexao.java import java.sql.*; import javax.swing.*; public class conexao { /*A Linguagem Java possui uma Application Programming Interface (API) que possibilita o acesso a Banco de Dados - Java DataBase Connectivity (JDBC) O que é a JDBC? Consiste em uma biblioteca, Implementada em Java, Disponibiliza classes e interfaces para acessar qualquer banco de dados; Importante: Para cada banco de dados existe uma implementação JDBC - Drivers.*/ //declarações das variáveis String driver = "org.postgresql.Driver"; //Classe do driver JDBC String banco = "aulaBD"; //Nome do Banco de Dados criado String host = "localhost"; //Maquina onde está o Banco de Dados String str_conn = "jdbc:postgresql://localhost:5432/aulaBD”; //URL de conexão String usuario = "postgres"; //Usuário do Banco de Dados String senha = "sql"; //Senha de conexão do servidor /* Principais classes do pacote java.sql: DriverManager: responsável por criar uma conexão com o banco de dados; Connection: classe responsável por manter uma conexão aberta com o banco de dados; Statement: gerencia e executa instruções SQL; ResultSet: responsável por receber e apresentar os dados obtidos do banco de dados.*/ Connection conn; Statement stmt; /*Metodo que faz conexão com o banco de dados retorna true se houve sucesso, ou false em caso negativo*/ public boolean getConnection() { try { Class.forName(driver); conn = DriverManager.getConnection(str_conn, usuario, senha); System.out.println("Conectou..."); return true; } catch (ClassNotFoundException erro) { System.out.println("Driver não encontrado" + erro.toString()); return false; } catch (SQLException erro) { System.out.println("Falha ao conectar" + erro.toString()); return false; } } public void close() { try { conn.close(); System.out.println("Desconectou..."); } catch (SQLException erro) { } } }
Compartilhar