Java com Banco de Dados Posgree Prof. Luiz Claudio Ferreira de Souza www.luizclaudiofs.blogspot.com 1 Driver para ligação Java e Postgre http://jdbc.postgresql.org/download.html www.luizclaudiofs.blogspot.com 2 Verificando a versão do java Instalado! No Gerenciador de arquivos ou com o Prompt de comando ativo digite java –version www.luizclaudiofs.blogspot.com 3 Fazendo Conexão com o Postgree Clique em serviços: www.luizclaudiofs.blogspot.com 4 Fazendo Conexão com o Postgree Clique com o botão direito do Mouse sobre Banco de Dados e escolha nova conexão www.luizclaudiofs.blogspot.com 5 Fazendo Conexão com o Postgree A janela abaixo aparecerá, direcione para a pasta onde você salvou o arquivo baixado www.luizclaudiofs.blogspot.com 6 Fazendo Conexão com o Postgree Em algumas situações o Netbeans já possui o drive, em outras devemos instalar (adicionar) o drive baixado! www.luizclaudiofs.blogspot.com 7 Conectando ao SGDB Postgre www.luizclaudiofs.blogspot.com 8 Vamos Testar a Conexão com o Banco de Dados Postgre www.luizclaudiofs.blogspot.com 9 www.luizclaudiofs.blogspot.com 10 Clique no botão próximo www.luizclaudiofs.blogspot.com 11 Selecione Públic e clique no botão Próximo, conforme abaixo www.luizclaudiofs.blogspot.com 12 Preservar o nome dado pelo Netbeans e clicar no botão Finalizar www.luizclaudiofs.blogspot.com 13 Observe a conexão com o Banco! www.luizclaudiofs.blogspot.com 14 Vamos a um exemplo de Cadastro de Cliente feito em Java com Postgre Inicialmente temos que criar a base de dados projetojava no Postgre utilizando a linguagem Sql www.luizclaudiofs.blogspot.com 15 Agora vamos criar a tabela usuario na base de dados projetojava www.luizclaudiofs.blogspot.com 16 Agora com a Base de Dados projetojava e a tabela usuario criadas, vamos ao java! www.luizclaudiofs.blogspot.com 17 No Netbeans vamos em arquivo e Novo Projeto www.luizclaudiofs.blogspot.com 18 Selecione Java e Aplicação Java www.luizclaudiofs.blogspot.com 19 Nome do Projeto: MinhaAplicacao, desmarque Criar Classe Principal e clique em finalizar Obs: MinhaAplicacao (Sem ç e sem ~) Escolha a pasta da localização do projeto www.luizclaudiofs.blogspot.com 20 Agora vamos criar os pacotes ou packages Usamos pacotes para organizar as classes semelhantes. Pacotes, a grosso modo, são apenas pastas ou diretórios do sistema operacional onde ficam armazenados os arquivos fonte de Java e são essenciais para o conceito de encapsulamento, no qual são dados níveis de acesso as classes. www.luizclaudiofs.blogspot.com 21 Encapsulamento É a técnica utilizada para esconder uma ideia, ou seja, não expôr detalhes internos para o usuário, tornando partes do sistema mais independentes possível. Por exemplo, quando um controle remoto estraga apenas é trocado ou consertado o controle e não a televisão inteira. Nesse exemplo do controle remoto, acontece a forma clássica de encapsulamento, pois quando o usuário muda de canal não se sabe que programação acontece entre a televisão e o controle para efetuar tal ação. Como um exemplo mais técnico podemos descrever o que acontece em um sistema de vendas, aonde temos cadastros de funcionários, usuários, gerentes, clientes, produtos entre outros. Se por acaso acontecer um problema na parte do usuário é somente nesse setor que será realizada a manutenção não afetando os demais. www.luizclaudiofs.blogspot.com 22 No Projeto criado (MinhaAplicacao) clique com o botão direito, selecione Novo, Pacote java www.luizclaudiofs.blogspot.com 23 No Nome do Pacote digite factory www.luizclaudiofs.blogspot.com 24 Criação dos Pacotes Da mesma forma que você criou o pacote factory crie os pacotes: Modelo, Dao e Gui Ficando assim: www.luizclaudiofs.blogspot.com 25 Pacote e Classes Obs: O nome do pacote e da classe não conterão caracteres utilizados na língua portuguesa (´ e ~) Factory significa “fábrica” e ConnectionFactory significa fábrica de conexões. Factory será o nome do pacote e ConnectionFactory o nome da classe que fará a interface com o driver JDBC de conexão a qualquer banco que desejar. Por isso o nome “fábrica”, pois o JDBC permite a conexão a qualquer banco: MySQL, Postgree, Oracle, SQL Server, etc., somente alterando a linha do método “getConnection”. Vamos começar criando a classe ConnectionFactory no pacote factory. Vá com o botão direito até factory e clique com o botão esquerdo em Novo > Classe Java. www.luizclaudiofs.blogspot.com 26 Criando a Classe ConnectionFactory no pacote factory www.luizclaudiofs.blogspot.com 27 Criando a Classe ConnectionFactory no pacote Factory www.luizclaudiofs.blogspot.com 28 O Pacote MinhaAplicacao ficará assim: www.luizclaudiofs.blogspot.com 29 Código para ser acrescentado na classe ConnectionFactory www.luizclaudiofs.blogspot.com 30 Sobre as linhas de código: Connection con = new ConnectionFactory().getConnection(); Note que o método getConnection() é uma fábrica de conexões, isto é, ele cria novas conexões para nós. Basta invocar o método e recebemos uma conexão pronta para uso, não importando de onde elas vieram e eventuais detalhes de criação. Portanto, vamos chamar a classe de ConnectionFactory e o método degetConnection. www.luizclaudiofs.blogspot.com 31 Try e Catch Tratamento de Exceções e Erros Umas das utilidades proporcionadas pela orientação a objetos de Java é a facilidade em tratar possíveis erros de execução chamados de exceções. Sempre que um método de alguma classe é passível de causar algum erro, então, podemos usar o método de tentativa - o try. Tudo que estiver dentro do bloco try será executado até que alguma exceção seja lançada, ou seja, até que algo dê errado. Quando uma exceção é lançada, ela sempre deve ser capturada. O trabalho de captura da exceção é executado pelo bloco catch. Um bloco try pode possuir vários blocos de catch, dependendo do número de exceções que podem ser lançadas por uma classe ou método. O bloco catch obtém o erro criando uma instância da exceção. Portanto, a sintaxe do bloco try catch é: try { // código a ser executado } catch (ClasseDeExceção instânciaDaExceção) { // tratamento da exceção } www.luizclaudiofs.blogspot.com 32 Vamos criar uma classe para testar a conectividade ao Postgre, o nome da classe será TestaConexao Você poderá criar a classe dentro do pacote factory www.luizclaudiofs.blogspot.com 33 Linhas de código da classe TestaConexao www.luizclaudiofs.blogspot.com 34 Para executar a aplicação, antes você terá que adicionar a biblioteca o drive do Postgre, vá em bibliotecas e clique com o botão direito e selecione Adicionar JAR/Pasta Após isso, selecione a pasta para onde você fez o download do drive www.luizclaudiofs.blogspot.com 35 Execute a aplicação www.luizclaudiofs.blogspot.com 36 Dentro do pacote Modelo, Crie a Classe Usuário www.luizclaudiofs.blogspot.com 37 Linhas de Código para a Classe Usuário www.luizclaudiofs.blogspot.com 38 Crie no Pacote DAO a classe UsuarioDAO Neste pacote ficam as classes que são responsáveis pela Consulta, Alteração e Deleção de registros nas tabelas do Banco de Dados www.luizclaudiofs.blogspot.com 39 Linhas de código da classe UsuarioDAO www.luizclaudiofs.blogspot.com 40 Linhas de código da classe UsuarioDAO www.luizclaudiofs.blogspot.com 41 Nossa aplicação back-end está toda finalizada. Precisamos aprontar o frontend, isto é, a interface de usuário, a classe que será responsável pela interação com o usuário, ou seja, o formulário de entrada. No Pacote Gui, crie a Classe UsuarioGUI www.luizclaudiofs.blogspot.com 42 Classe UsuarioGUI criada no Pacote gui www.luizclaudiofs.blogspot.com 43 Com a ferramenta Painel, escolha propriedades. Clique em Borda>Borda de título, intitule Cadastrar novo usuário Construa a interface abaixo www.luizclaudiofs.blogspot.com 44 Clique duas vezes no botão Sair para criarmos o seu evento Linha de código para o botão: System.exit(0); www.luizclaudiofs.blogspot.com 45 Clicando em Shift + F6 você poderá ver como ficará sua interface! www.luizclaudiofs.blogspot.com 46 Botão Limpar Linhas de código para o botão Limpar: www.luizclaudiofs.blogspot.com 47 Linhas de Código para o Botão Cadastrar www.luizclaudiofs.blogspot.com 48 Observação! Certamente algumas mensagens de erro aparecerão. Isto porque temos que importar no início do código as classes Usuario (pacote modelo) e UsuarioDAO (pacote dao). Além destas, precisamos importar a classe JOptionPane, responsável pelas janelas de validação, aquelas que aparecem dizendo se o usuário foi ou não cadastrado, se os campos estão vazios, etc. Coloque estas linhas no início do código, abaixo de “package gui”, na aba Código-fonte: import modelo.Usuario; import dao.UsuarioDAO; import javax.swing.JOptionPane; www.luizclaudiofs.blogspot.com 49 www.luizclaudiofs.blogspot.com 50