Manipulação de Banco de Dados

Propaganda
LP_Aula18
Manipulação de Banco de Dados com
Java
1. Objetivos


Demonstrar os fundamentos básicos para a manipulação de banco de dados
com Java;
Apresentar a sintaxe de comandos SQL usados em Java.
2. Definições
A linguagem Java possui classes que permitem a conexão com um banco de dados.
Essas classes fazem parte do pacote JDBC (Java Database Connectivity), uma API
(Aplication Program Interface) que permitem a comunicação com diversos bancos
de dados SQL (Oracle, MySql, SqlServer, Postgre, etc.). Muitos desses bancos de
dados utilizam um padrão de comunicação chamado ODBC (Open Database
Connectivity) que pode ser usado para criar uma fonte de dados entre o Banco e o
JDBC. O pacote JDBC fornece uma maneira bem simples de acessar tabelas em
Java utilizando comandos SQL (Structured Query Language). Ele é instalado em
conjunto com o JDK e voce não precisa fazer nenhuma instalação adicional para
manipular banco de dados com Java.
Os passos necessários para a manipulação de banco de dados por meio de uma
aplicação são os seguintes:



A criação de banco de dados;
A definição do driver a ser usado para a conexão ao banco de dados e do
endereço (URL) de sua localização;
A criação da aplicação Java propriamente dita.
2.1. A Criação do Banco de Dados
Os procedimentos seguintes consideram as etapas básicas para a criação do banco
de dados por meio do MySql, no entanto é possível que existam pequenas
variações. Para facilitar o procedimento basta somente copiar o seguinte script
SQL:
CREATE DATABASE colegio
CREATE TABLE aluno (
al_cod int(3) unsigned NOT NULL auto_increment,
al_nome varchar(40) default NULL,
al_idade int(3) unsigned default '0',
al_curso varchar(40) default NULL,
PRIMARY KEY (al_cod),
KEY al_cod (al_cod)
);
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INTO
INTO
INTO
INTO
INTO
INTO
aluno
aluno
aluno
aluno
aluno
aluno
VALUES("1",
VALUES("2",
VALUES("3",
VALUES("4",
VALUES("5",
VALUES("6",
Linguagem de Programação
"Kátia", "23", "Secretariado");
"Julio", "27", "Informática");
"Diego", "34", "Edificações");
"Deyse", "19", "Administração");
"Laura", "24", "Saúde Bucal");
"Hamilton", "32", "Arte");
Página 1
LP_Aula18
2.2. A Definição do Driver para Conexão
Para acessar um banco de dados por meio de Java, é necessário carregar um driver
especifico do banco de dados. Existem diferentes versões para os drivers, mesmo
considerando o mesmo fabricante. Na maioria dos casos, é necessário baixar o
driver de um site da Internet e adicionar o caminho desse driver à variável de
ambiente CLASSPATH.
A seguir é apresentado o código a ser adicionado ao programa Java para o
carregamento do driver, considerando diversos tipos de banco, ou seja,
dependendo do banco a ser acessado, é necessário carregar um driver diferente.
Em Java, o driver é carregado na memória por meio da sintaxe
Class.forName(“nome-do-driver-a-ser-carregado”).

No Access:
Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);

No MySql:
Class.forName(“com.mysql.jdbc.Driver”);

No Oracle:
Class.forName(“oracle.jdbc.driver.OracleDriver”);

No Microsoft SQL Server:
Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”);

No Sysbase:
Class.forName(“com.sybase.jdbc2.jdbc.SybDriver”);

No Postgre:
Class.forName(“org.postegresql.Driver”);

No DB2/Neon:
Class.forName(“com.neon.jdbc.Driver”);
2.3. Download do Driver
Após definido o Banco de Dados que será utilizado, é necessário fazer o download
do driver especifico do fabricando para fazer a conexão. Vamos tomar como base o
Connector/J do fabricante MySQL que está disponível para download em
http://www.mysql.com com o nome do arquivo e versão da seguinte formar:
mysql-connector-java-5.1.22.zip.
Download: http://cdn.mysql.com/Downloads/Connector-J/mysql-connector-java5.1.22.zip).
2.4. Criação da Aplicação em Java
Para criar uma aplicação que realiza a manipulação de banco de dados, é
necessário incluir instruções no programa para carregar o driver da linguagem Java
(jdbc:odbc) que será o responsável por realizar a ponte com a fonte de dados
ODBC. Para facilitar a compreensão, a manipulação do banco de dados será
executada em duas partes: a primeira vai realizar apenas a conexão com o banco e
a segunda, a manipulação do banco em si.
Linguagem de Programação
Página 2
LP_Aula18
2.5. Importando o driver de conexão (configurando classpath
de compilação)
Depois de extrair do mysql-connector-java-5.1.22.zip o arquivo mysqlconnector-java-5.1.22-bin.jar, vamos precisar importá-lo para o projeto.
Como o algumas classes do projeto DataBase vai depender de outras classe em
Bibliotecas, é necessário adicionar a Bibliotecas ao classpath do DataBase. Isso
também garante que as classes no projeto DataBase possam se referir a classes no
projeto Bibliotecas sem causar erros de compilação. Além disso, isso permite que
você utilize o autocompletar de código no projeto DataBase para preencher o
código com base no projeto Bibliotecas. No IDE, o classpath é visualmente
representado pelo nó Bibliotecas.
Para adicionar as classes de utilitário da biblioteca ao classpath do projeto:
1. na janela Projetos, clique com o botão direito do mouse no nó Bibliotecas do
projeto DataBase e selecione Adicionar Jar/past, como mostrado na imagem a
seguir.
Imagem mostrando o comando
Adicionar Jar/pasta..., oferecido quando
você clica com o botão direito do mouse
no nó de um projeto.
2. Procure NetBeans_projects/ e selecione a pasta de projeto Bibliotecas. O painel
Arquivos JAR do projeto mostrará os arquivos JAR que podem ser adicionados
ao projeto. Observe que um arquivo JAR do Bibliotecas está listado, embora
ainda não tenha sido construído. Esse arquivo JAR será criado quando você
construir e executar o projeto DataBase.
3. Clique em Adicionar arquivos JAR do projeto.
Linguagem de Programação
Página 3
LP_Aula18
4. Expanda o nó Bibliotecas. O arquivo JAR do projeto Bibliotecas será adicionado
ao classpath do projeto DataBase.
3. Conexão e Consulta
3.1. Conexão com o Banco de Dados
Ao executar o seguinte programa, e enviada uma mensagem indicando o sucesso
ou não da conexão ao banco de dados.
import
import
import
import
java.sql.Connection;
java.sql.DriverManager;
java.sql.SQLException;
javax.swing.JOptionPane;
public class Conexao {
public static void main(String[] args) {
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/colegio";
try {
Class.forName(driver);
Connection connection = DriverManager.getConnection(url, "root",
"");
JOptionPane.showMessageDialog(null,
"Conexao
realizada
com
sucesso");
connection.close();
} catch (ClassNotFoundException erro) {
JOptionPane.showMessageDialog(null,
"Driver
JDBC-ODBC
não
encontrado!");
} catch (SQLException erro) {
JOptionPane.showMessageDialog(null, "Problemas na conexao com a
fonte de dados" + erro.toString());
}
}
3.1. Consulta ao Banco de Dados por meio do SQL
Uma maneira possível de acessar um banco de dados em Java é por meio da
linguagem SQL. Essa forma representa uma maneira simples de manipular dados
usando a linguagem Java. Em aplicações mais robustas é comum se utilizar
frameworks específicos que ocultam detalhes das operações em banco de dados.
Um dos frameworks mais usado é o Hibernate (http://www.hibernate.org/).
O exemplo abaixo acrescenta código do exemplo anterior, mantendo os códigos
para a conexão ao banco de dados, demonstrando os procedimentos necessários
para realizar a consulta ao banco de dados por meio de comando em SQL. O
exemplo utiliza o banco de dados tabela aluno preenchida de acordo com o script já
demonstrado. O exemplo parte do principio que o aluno já possui algum
conhecimento dos comandos SQL, uma vez que já em outras disciplinas já foi
estudado esse conceito.
Linguagem de Programação
Página 4
LP_Aula18
import
import
import
import
import
import
java.sql.Connection;
java.sql.DriverManager;
java.sql.ResultSet;
java.sql.SQLException;
java.sql.Statement;
javax.swing.JOptionPane;
public class Consulta {
public static void main(String[] args) {
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/colegio";
try {
Class.forName(driver);
Connection connection = DriverManager.getConnection(url, "root",
"");
String sql = "SELECT al_cod, al_nome, al_idade, al_curso FROM
aluno where al_idade > '18' AND al_idade < '27'order by al_curso";
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(sql);
System.out.println("COD
NOME
IDADE
CURSO");
System.out.println("---------------------------");
while (resultSet.next()) {
String codigo = resultSet.getString("al_cod");
String nome = resultSet.getString("al_nome");
String idade = resultSet.getString("al_idade");
String curso = resultSet.getString("al_curso");
System.out.println(codigo + "\t" + nome+ "\t" +idade+ "\t"
+curso);
}
resultSet.close();
statement.close();
connection.close();
} catch (ClassNotFoundException erro) {
JOptionPane.showMessageDialog(null,
"Driver
JDBC-ODBC
não
encontrado!");
} catch (SQLException erro) {
JOptionPane.showMessageDialog(null, "Problemas na conexao com o
banco de dados" + erro.toString());
}
}
}
Para Insert:
String sql = "INSERT INTO aluno VALUES('11','Lola','23','Arte')";
statement.executeUpdate(sql);
Para Delete:
String sql = "DELETE FROM aluno WHERE al_idade='19'";
statement.executeUpdate(sql);
Para Update:
String sql = "Update aluno SET al_nome = 'Xuxa' WHERE al_cod='3'";
statement.executeUpdate(sql);
Para saber o numero de linhas afetada utilize da seguinte forma conforme descrito:
int linhasAfetadas = statement.executeUpdate(sql);
Linguagem de Programação
Página 5
Download