• Nenhum resultado encontrado

Utilizando Scanner

No documento LINGUAGEM DE PROGRAMAÇÃO II VOLUME 01 (páginas 35-58)

A classe Scanner pode ser utilizada para ler dados do arquivo, da mesma maneira que você utiliza para ler dados do teclado. Para isto, basta criar um objeto Scanner e, ao invés de passar System.in, você passe um objeto do tipo BufferedReader:

arquivo = new Scanner (new BufferedReader(new FileReader("arquivo1.txt")));

Veja na figura 1.5 o código que tem a mesma funcionalidade do código da figura 1.4, porém utilizando a classe Scanner.

Figura 1.5: Código utilizando Scanner

Fonte: Conteudista

Porém, você pode também utilizar os métodos nextInt(), nextDouble(), etc, e assim já transformar o texto que está gravado dentro do arquivo em números.

1.3.5 Utilizando DataStreams

Até agora, você estava tratando arquivos textos, porém muitas vezes é melhor tratar os arquivos de forma binária, pois ocupa menos espaço e não perde-se tempo fazendo conversão de texto para binário e vice- versa.

Arquivos textos possuem uma vantagem, pois pode ser aberto em qualquer editor de texto e qualquer pessoa pode ver o seu conteúdo. Já arquivos binários tem aplicações maiores dentro da programação.

Existem as classes DataOutputStream e DataInputStream que podem ler e escrever tipos de dados primitivos (int, double, char, etc.) e Strings em arquivos.

Veja os códigos da figura 1.6 e 1.7 como exemplo de utilização destas classes. Observe que agora é necessário utilizar as classes FileOutputStream, BufferedOutputStream, FileInputStream e BufferedInputStream.

Figura 1.6: Código utilizando DataOutputStream

Figura 1.7: Código utilizando DataInputStream

Fonte: Conteudista

Observe que é preciso saber como as informações foram gravadas no arquivo binário, pois se você primeiro salvar uma string e na hora de ler tentar recuperar um double, você obterá um double que não fará sentido (não haverá um erro de execução, pois isto é um erro de lógica).

1.3.6 Utilizando ObjectStreams

Se você quiser salvar em disco objetos, ao invés de tipos primitivos, então é necessário utilizar as classes ObjectOutputStream e ObjectInputStream.

É importante salientar que apenas objetos de classes serializáveis em Java é que podem ser armazenadas e recuperadas utilizando estes tipos de streams. Você pode ver na API do Java se a classe desejada é serializável.

Estes tipos de Streams também possuem os mesmos métodos para salvar e ler os tipos primitivos, portanto com elas vocês podem tanto salvar objetos, quantos tipos primitivos.

Veja na figura 1.8 o código da classe Pessoa que implementa a interface java.io.Serializable. Observe que a única coisa necessária para que esta classe pudesse ser salva em arquivo foi adicionar: implementsjava.io.Serializable na declaração da classe.

Figura 1.8: Código da Classe Pessoa

Fonte: Conteudista

As figuras 1.9 e 1.10 possuem os códigos para gravar e ler uma pessoa no disco, respectivamente. Observe que a pessoa é armazenada de uma única vez, não foi necessário salvar o nome e depois a idade, o objeto pessoa como um todo foi salvo utilizando o método writeObject. Da mesma forma, a pessoa foi lida de uma única vez utilizando readObject.

Figura 1.9:Código utilizando ObjectOutputStream

Fonte: Conteudista

Figura 1.10: Código utilizando ObjectInputStream

O método readObject() pode levantar também a exceção ClassNotFoundException, veja que o main da figura 1.10 agora também pode levantar esta exceção. Isto acontece, se você tentar ler do arquivo um objeto e não existir a classe Pessoa, neste exemplo.

Saiba Mais

Vocês pode obter mais detalhes sobre arquivos nos seguintes sites: http://download.oracle.com/javase/tutorial/essential/io/index. html http://wiki.sj.ifsc.edu.br/wiki/index.php/Trabalhando_com_ar quivos_texto_em_Java http://www.ic.uff.br/~vanessa/courses/2011.1/ed2/02- Arquivos.pdf Atividades de aprendizagem:

1. Teste todos os códigos disponíveis neste capítulo e tente alterar um pouco para aprender mais sobre os conceitos.

RESUMO

A plataforma Java oferece várias funcionalidades para você. Existe o framework de coleções que facilita o armazenamento, recuperação e manipulação de dados que está dividido em Interfaces, Implementações e Algoritmos. Também você viu como é simples armazenar e recuperar informações em arquivos utilizando as classes disponíveis no Java.

2. BANCO DE DADOS

Objetivos

Saber o que é JDBC.

Aprender a trabalhar com banco de dados no Java.

2.1 Introdução

Quando a quantidade de dados a ser manipulada dentro de um programa cresce muito, aumenta a complexidade para tratar estes dados.

Neste cenário, ao invés de armazenar dados em arquivos e começar a pensar em técnicas de otimização (para deixar o acesso mais rápido), técnicas de segurança (para não perder dados no caso de queda de energia, para não permitir acesso não autorizado aos dados), etc, é mais produtivo utilizar um sistema gerenciador de banco de dados (SGBD).

A plataforma Java facilita a utilização de SGBDs dentro do seu código, inclusive é transparente se o servidor de banco de dados está na mesma máquina, ou está rodando em um servidor do outro lado do planeta.

2.2 JDBC

O termo JDBC significa Java DatabaseConnectivity que é a forma que o Java oferece para se conectar com os SGBDs. Na realidade você tem um conjunto de classes disponíveis na API do Java para realizar esta tarefa.

Além das classes da API do Java, é necessário também se ter um driver JDBC específico para o banco de dados que você deseja se conectar. Os mais eficientes são os drivers nativos, pois não realizam nenhuma conversão adicional, e são os que você deve procurar quando você for desenvolver a sua aplicação.

Quando você escreve o código da sua aplicação para acessar o banco de dados, o JDBC converte os seus comandos para os comandos específicos do SGBD que você está utilizando. Uma ponto importante é que você não precisará alterar o seu código quando trocar de SGBD, basta trocar o driver JDBC e todo o seu código irá funcionar perfeitamente (mudando apenas a String de conexão).

Existem vários banco de dados disponíveis para uso gratuito: Microsoft SQL Server Express, OracleDatabase Express Edition, MySQL, PostgreSQL, Apache Derby, entre outros.

Por questão de simplicidade, e já vir com a instalação do Netbeans (versão Java ou All e você escolhe instalar o servidor de aplicações GlassFish), você irá utilizar neste curso o Java DB. Porém, na hora

que você for desenvolver um sistema é recomendável que você utilize banco de dados mais robustos e eficientes.

Fique sabendo que o banco de dados Java DB é na realidade a versão do Apache Derby que a Oracle distribui.

2.3 Java DB e Netbeans

Você pode gerenciar o Java DB de dentro do próprio Netbeans, e isto irá facilitar bastante a utilização de um banco de dados enquanto você está aprendendo.

É importante saber instalar, configurar e executar um banco de dados desvinculado do Netbeans quando você for distribuir a sua aplicação, porém este assunto está fora do escopo deste curso.

No Netbeans, como pode ser visto na figura 2.1, dentro da aba Serviços (Services), existe o tópico Banco de Dados que pode ser aberto, e este possui o sub-tópico Java DB.

Figura 2.1: Aba Serviços do Netbeans exibindo o Java DB

Fonte: Captura de tela do Netbeans

Ao clicar com o botão direito do mouse sobre o tópico Java DB, aparece uma caixa de diálogo exibida na figura 2.2. Nesta primeira vez, você irá clicar em Criar banco de dados... e preencherá a tela de acordo com a figura 2.3, onde a senha utilizada foi “admin” sem as aspas.

Figura 2.2: Criar um banco de dados Java DB

Figura 2.3: Caixa de diálogo Criar banco de dados Java DB

Fonte: Captura de tela do Netbeans

Observe que ao clicar no botão OK, o SGBD Java DB foi iniciado e o banco de dados BancoTeste01 foi criado. Agora você deverá clicar com o botão direito sobre este BancoTeste01 e selecionará a opção Conectar conforme a figura 2.4.

Figura 2.4: Conectar-se ao banco de dados BancoTeste01

Fonte: Captura de tela do Netbeans

Veja na figura 2.5 que o ícone não está mais “quebrado”, indicando que o banco de dados BancoTeste01 está conectado.

Figura 2.5: Banco de dados BancoTeste01 conectado

Fonte: Captura de tela do Netbeans

Ao expandir o banco de dados BancoTeste01 aparecerá o sub-tópico APP, e ao expandi-lo, aparecerá Tabelas, como pode ser visto na figura 2.6.

Figura 2.6: Sub-tópico: BancoTeste01  APP  Tabelas

Fonte: Captura de tela do Netbeans

Se você clicar com o botão direito sobre Tabelas (vide figura 2.7), poderá criar uma nova tabela utilizando um editor visual do Netbeans.

Figura 2.7: Opção de criar uma nova tabela

Fonte: Captura de tela do Netbeans

A utilização da caixa de diálogo Criar tabela (vide figura 2.8) é bem intuitiva, você preenche o nome da tabela e depois vai clicando no botão Adicionar coluna até ter criado todos os campos da tabela.

Figura 2.8: Caixa de diálogo Criar tabela

A caixa de diálogo Adicionar coluna pode ser vista na figura 2.9, nela você preenche os campos como o nome da coluna, o tipo, se é chave primária ou não, etc.

Figura 2.9: Caixa de diálogo Adicionar coluna

Fonte: Captura de tela do Netbeans

Outra forma de interagir com o banco de dados BancoTeste01 é através da execução direta de comandos através da opção Executar comando, como pode ser vista na figura 2.10.

Figura 2.10: Opção Executar comando...

Fonte: Captura de tela do Netbeans

Na figura 2.11 você pode ver que foi aberto um novo documento Comando SQL 1, onde você poderá digitar diretamente os comandos SQL para criação da tabela. Nesta figura também você visualiza o código para criar uma tabela Pessoa neste banco de dados, e o botão Rodar SQL que executa o comando.

Figura 2.11: Digitação de código SQL

Fonte: Captura de tela do Netbeans

Veja do lado esquerdo da figura 2.11 que apareceu um novo esquema chamado ADMIN dentro do BancoTeste01, pois o código de criação de tabela não informou que a tabela Pessoa fosse criada no esquema APP (escrevendo que o nome da tabela era APP.PESSOAS). O esquema ADMIN também aparece em negrito, pois qualquer comando SQL executado irá procurar tabelas gravadas dentro deste esquema. Assume-se que as tabelas foram criadas dentro do esquema padrão (você pode definir o esquema padrão, clicando com o botão direito em cima do esquema e depois selecionando a opção Definir como esquema padrão).

Na figura 2.12 você visualiza o código de criação das tabelas Pessoas, Grupos, PertenceA que serão utilizadas para os próximos exemplos. Note que as tabelas foram digitadas todas em maiúsculo para evitar

às vezes acontece, pois o Java é case sensitive e a maioria dos SGBDs são case insensitive.

Figura 2.12: Código SQL da criação das tabelas Pessoas, Grupos e PertenceA

Fonte: Conteudista

É possível também inserir dados utilizando a interface gráfica que o Netbeans oferece, você pode clicar com o botão direito em cima da tabela e escolher a opção Visualizar dados. O Netbeans abre uma nova aba exibindo os dados da tabela, com um botão Inserir registros, que você pode clicar e digitar quantos registros você quiser sem precisar utilizar o comando INSERT do SQL.

Saiba Mais

Vocês pode obter mais detalhes sobre comandos SQL nas seguintes referências: http://download.oracle.com/javase/tutorial/jdbc/overview/dat abase.html http://marciobueno.com/arquivos/ensino/bd2/BD2_01_SQL.p df http://www.kraemer.pro.br/bd2/sql.pdf http://imasters.com.br/artigo/246/sql_server/revisao_de_con ceitos/

No documento LINGUAGEM DE PROGRAMAÇÃO II VOLUME 01 (páginas 35-58)

Documentos relacionados