Estrutura do Projeto - Trabalhando com Banco de

Propaganda
Estrutura do Projeto - Trabalhando com Banco de Dados
Utilizando o Postgresql como Base de Dados
- Trabalhando com banco de Dados (Abra o pgAdmin III)
- Clique duas vezes sobre o PostgreSQL (8.3) e digite a senha para ter acesso ao postgres.
- Será exibida uma estrutura semelhante à abaixo:
CRIANDO UM BANCO DE DADOS
- Clique com o botão direito do mouse sobre Banco de Dados (DataBase), escolha Novo Banco de Dados (New DataBase).
- Digite o Nome do banco e confirme no Ok.
CRIANDO TABELA
- Clique no banco criado. Que agora se encontra no navegador de objetos, escolha Nova Tabela.
- Com a caixa de diálogo Nova Tabela aberta, na aba
Propriedades, digite o nome da Tabela (aluno).
- Para criar os campos, na mesma caixa escolha a aba Colunas e informe os campos da tabela.
- Para essa atividade crie os campos matricula, nome e telefone, todos do tipo character varying, que corresponde ao tipo String.
ATRIBUINDO UMA CHAVE PRIMÁRIA
Depois dos campos criados, clique na aba, Restrições, clique sobre o botão adicionar, na aba propriedades da Caixa de Diálogo
NOVA CHAVE PRIMÁRIA, digite um nome para a chave, depois clique na aba COLUNAS, escolha o campo matrícula, clique no
botão adicionar e depois no botão OK. Depois desses passos, sua tabela estará criada.
UTILIZANDO O ECLIPSE PARA DESENVOLVER UMA APLICAÇÃO
Desenvolvendo a Tela Principal da aplicação
principal.html
<html>
<head>
<title>Sistema Escolar</title>
</head>
<body>
<h1> Sistema Escolar</h1>
<hr>
<a href="aluno.html">Cadastrar Aluno</a><br>
<a href="exibirAlunos.jsp">Listagem de Alunos</a>
</body>
</html>
aluno.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Cadastrando Alunos</title>
</head>
<body>
<h1><center>Cadastro de Alunos</center></h1>
<hr>
<form action="servAluno" method="get">
<table border=1>
<tr>
<td>Matrícula</td><td><input type="text" name="txtMatricula"/></td>
</tr>
<tr>
<td>Nome</td><td><input type="text" name="txtNome"/></td>
</tr>
<tr>
<td>Endereço</td><td><input type="text" name="txtEndereco"/></td>
</tr>
<tr>
<td><input type="submit" name="btnBotao" value="Incluir"/></td>
</tr>
</table>
</form>
</body>
</html>
OBS.: As restrições de acesso existem a fim de não permitir que o desenvolvedor utilize os objetos de qualquer maneira, mas o fato de um atributo
não ser público, não significa que não poderá acessá-lo ou alterá-lo, para isso existirão métodos públicos.
Para exemplificar esse caso, podemos utilizar o objeto String. Sendo o objeto String nada mais, nada menos do que um vetor de caracteres. Não
temos permissão para acessar os conteúdos internos desses caracteres por acesso a atributos diretos, para isso utilizamos métodos, lo go os atributos
são privados e os métodos públicos.
CONSTRUINDO O PACOTE MODELO A CLASSE ALUNO
Observe o diagrama ao lado e desenvolva a classe, que o identifica.
- Na classe Aluno, declare os atributos, para criação dos métodos de manipulação e os
construtores da classe.
- CRIANDO OS MODIFICADORES DE ACESSO
Clicar com o botão direito do mouse na linha de declaração de variáveis, escolha a opção SOURCE, Generate Getters and
Setters (marque todos os atributos e finalize a operação). Serão gerados os métodos de manipulação (públicos) para os atributos
privados.
A função do construtor é garantir que o objeto associado à variável definida será instanciado corretamente. Sempre é necessário ter
um construtor. O método construtor tem exatamente o mesmo nome da classe.
- Criando os métodos construtores da classe (padrão e sobrecarregado)
1. Clicar com o botão direito do mouse na linha de declaração de variáveis, escolha novamente a opção SOURCE, Generate
Constructor using Fields (marcar todos os atributos e finalizar (será criado o método construtor sobrecarregado)).
Repetir o passo 1, só que agora você precisa desmarcar todos os atributos e finalizar (será construído então o método
construtor da classe (padrão)).
Depois dessas ações será criada a classe como ilustrada abaixo:
package modelo;
public class Aluno {
private String matricula, nome, endereco;
public Aluno() {
super();
}
public Aluno(String matricula, String nome, String endereco) {
super();
this.matricula = matricula;
this.nome = nome;
this.endereco = endereco;
}
public String getMatricula() {
return matricula;
}
public void setMatricula(String matricula) {
this.matricula = matricula;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getEndereco() {
return endereco;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
}
MODEL-VIEW-CONTROLLER (MVC) é um padrão de arquitetura de software que visa a separar a lógica de
negócio da lógica de apresentação, permitindo o desenvolvimento, teste e manutenção isolado de ambos.
Um caso prático é uma aplicação web em que a visão é um documento HTML (ou derivado) gerado pela
aplicação. O controlador recebe uma entrada GET ou POST após um estímulo do utilizador e decide como processála, invocando objetos do domínio para tratar a lógica de negócio, e por fim invocando uma visão para apresentar a
saída.
Leia atentamente as informações:
Baixando e Inserindo o Driver para estabelecer a conexão
Ao utilizarmos Java para construir alguns sistemas, torna-se prática a utilização do JDBC para acesso aos bancos de dados. No caso do
PostgreSQL. Para baixar o Driver JDBC, que fará a conexão, acesse: http://jdbc.postgresql.org/download.html, nesta página você encontrará o
driver JDBC, para diferentes versões, você deverá observar a versão da JDK, instalada na sua máquina (JDK 1.6 última versão disponível) e
baixar a versão compatível.
Este Driver deve ser adicionado na pasta LIB do projeto em desenvolvimento, localizado dentro da pasta WEB-INF
Ao importar o pacote Java.sql.*, você tem acesso às classes e interfaces para manipular os bancos de dados relacionais em Java.
O driver de banco de dados deve ser empregado antes do programa se conectar ao banco de dados.
O método static forName da classe Class (pacote Java.lang) é utilizado para carregar a definição de classe para o Driver de Banco de
Dados.
Se a classe não for localizada, ele dispara uma exceção: Java.lang.ClassNotFoundException.
Um objeto Connection gerencia a conexão entre o programa Java e o banco de dados. Ele também fornece suporte ao programa para
executar instrução SQL.
Através do método static getConnection, a classe DriverManager tenta estabelecer uma conexão com o banco de dados especificado
pela String: jdbc:postgresql:escola. Os argumentos seguintes são nome de usuário e senha, demonstrados pela String postgres e postgres
respectivamente. (Usuário e senha variam de acordo com o que foi estabelecido durante a instalação do software)
Caso a classe DriverManager não consiga se conectar ao banco de dados, o método getConnection dispara uma exceção.
A responsabilidade principal da interface Statement é executar sentenças SQL no banco de dados.
Com o método público createStatement você cria um objeto Statement para enviar declarações SQL ao banco de dados. Se houver um
erro, dispara também uma exceção java.sql.SQLException.
Com o método executeQuery, você tem o retorno de um objeto que implementa ResultSet e que contém resultados da consulta.
Desenvolva as classes abaixo:
Construindo as Classes (Banco e Conectando) para estabelecer a conexão com o Banco de Dados (Package persistência)
CLASSE BANCO
package persistencia;
import java.sql.Connection;
import java.sql.Statement;
import modelo.Aluno;
public class Banco {
private Connection con = null;
private Statement st = null;
public Banco() throws Exception{
con=Conectando.getConnection();
st=con.createStatement();
}
public void incluirAluno(Aluno alu)throws Exception{
st.executeUpdate("insert into aluno
values('"+alu.getMatricula()+"','"+alu.getNome()+"','"+alu.getEndereco()+"')");
}
}
CLASSE CONECTANDO
package persistencia;
import java.sql.*;
public class Conectando
{
public static Connection conexao= null;
public static Connection getConnection()throws Exception
{
if(conexao==null)
{
Class.forName("org.postgresql.Driver");
conexao=DriverManager.getConnection("jdbc:postgresql:escola","postgres","postgres");
}
return conexao;
}
}
CRIANDO O SERVALUNO NO PACOTE CONTROLE
package controle;
import
import
import
import
import
java.io.IOException;
java.io.PrintWriter;
javax.servlet.ServletException;
javax.servlet.http.*;
persistencia.Banco;
import modelo.Aluno;
public class servAluno extends HttpServlet {
private static final long serialVersionUID = 1L;
public servAluno() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
doPost(request,response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException
{
response.setContentType("text/html");
PrintWriter saida = response.getWriter();
Aluno alu = new Aluno();
String dados = request.getParameter("btnBotao");
if (dados.equals("Incluir"))
{
try
{
alu.setMatricula(request.getParameter("txtMatricula"));
alu.setNome(request.getParameter("txtNome"));
alu.setEndereco(request.getParameter("txtEndereco"));
Banco banco = new Banco();
banco.incluirAluno(alu);
saida.println("<h1>Inclusão Efetuada com Sucesso</h1>");
saida.println("<a href='principal.html'>Retornar ao Menu</a>");
}
catch(Exception e)
{
saida.println("ERRO:"+e.getMessage());
}
}
}
}
CRIANDO O BOTÃO ALTERAR
Para o funcionamento correto do botão ALTERAR, deverão ser digitados os dados que se deseja alterar, essa busca será
feita com base na matrícula.
Na tela aluno (aluno.html), deverá ser criado mais um botão: Observe o texto destacado em vermelho e altere.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Cadastrando Alunos</title>
</head>
<body>
<h1><center>Cadastro de Alunos</center></h1>
<hr>
<form action="servAluno" method="get">
<table border=1>
<tr>
<td>Matrícula</td><td><input type="text" name="txtMatricula"/></td>
</tr>
<tr>
<td>Nome</td><td><input type="text" name="txtNome"/></td>
</tr>
<tr>
<td>Endereço</td><td><input type="text" name="txtEndereco"/></td>
</tr>
<tr>
<td><input type="submit" name="btnBotao" value="Incluir"/></td>
<td><input type="submit" name="btnBotao" value="Alterar"/></td>
</tr>
</table>
</form>
</body>
<html>
ALTERANDO A CLASSE BANCO
Adicione o trecho em destaque, na estrutura existente.
package persistencia;
import java.sql.*;
public class Banco {
private Connection con = null;
private Statement st = null;
public Banco() throws Exception{
con=Conectando.getConnection();
st=con.createStatement();
}
public void incluirAluno(Aluno alu)throws Exception{
st.executeUpdate("insert into aluno
values('"+alu.getMatricula()+"','"+alu.getNome()+"','"+alu.getEndereco()+"')");
}
public void alterarAluno(Aluno alu)throws Exception {
st.executeUpdate("update aluno set
nome='"+alu.getNome()+"',endereco='"+alu.getEndereco()+"' where matricula='"+alu.getMatricula()+"'");
}
}
ALTERANDO O SERVALUNO
Adicione o trecho em destaque, na estrutura existente.
package controle;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import persistencia.Banco;
import modelo.Aluno;
public class servAluno extends HttpServlet {
private static final long serialVersionUID = 1L;
public servAluno() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,
IOException {
doPost(request,response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,
IOException {
response.setContentType("text/html");
PrintWriter saida = response.getWriter();
Aluno alu = new Aluno();
String dados = request.getParameter("btnBotao");
if (dados.equals("Incluir")){
try
{
alu.setMatricula(request.getParameter("txtMatricula"));
alu.setNome(request.getParameter("txtNome"));
alu.setEndereco(request.getParameter("txtEndereco"));
Banco banco = new Banco();
banco.incluirAluno(alu);
saida.println("<h1>Inclusão Efetuada com Sucesso</h1>");
saida.println("<a href='principal.html'>Retornar ao Menu</a>");
}
catch(Exception e)
{
saida.println("ERRO:"+e.getMessage());
}
}
if (dados.equals("Alterar")){
try
{
alu.setNome(request.getParameter("txtNome"));
alu.setMatricula(request.getParameter("txtMatricula"));
alu.setEndereco(request.getParameter("txtEndereco"));
Banco banco = new Banco();
banco.alterarAluno(alu);
saida.println("<h1>Alteração Efetuada com Sucesso</h1>");
saida.println("<a href='principal.html'>Retornar ao Menu</a>");
}
catch(Exception e){
saida.println("ERRO:"+e.getMessage());
}
}
}
}
DESENVOLVENDO O BOTÃO EXCLUIR
Para o desenvolvimento dessa tela foram alteradas algumas, linhas para organização da tela:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Cadastrando Alunos</title>
</head>
<body>
<h1><center>Cadastro de Alunos</center></h1>
<hr>
<form action="servAluno" method="get">
<table border=1>
<tr>
<td>Matrícula</td><td><input type="text" name="txtMatricula"/></td>
<td><input type="submit" name="btnBotao" value="Incluir"/></td>
</tr>
<tr>
<td>Nome</td><td><input type="text" name="txtNome"/></td>
<td><input type="submit" name="btnBotao" value="Alterar"/></td>
</tr>
<tr>
<td>Endereço</td><td><input type="text" name="txtEndereco"/></td>
<td><input type="submit" name="btnBotao" value="Excluir"/></td>
</tr>
</table>
</form>
</body>
</html>
ALTERANDO A CLASSE BANCO
Adicione o trecho em destaque, na estrutura existente.
package persistencia;
import java.sql.*;
public class Banco {
private Connection con = null;
private Statement st = null;
public Banco() throws Exception{
con=Conectando.getConnection();
st=con.createStatement();
}
public void incluirAluno(Aluno alu)throws Exception{
st.executeUpdate("insert into aluno
values('"+alu.getMatricula()+"','"+alu.getNome()+"','"+alu.getEndereco()+"')");
}
public void alterarAluno(Aluno alu)throws Exception {
st.executeUpdate("update aluno set nome='"+alu.getNome()+"',endereco='"+alu.getEndereco()+"' where
matricula='"+alu.getMatricula()+"'");
}
public void excluirAluno(String matricula)throws Exception {
st.executeUpdate("delete from aluno where matricula = '"+matricula+"'");
}
}
ALTERANDO O SERVALUNO
Adicione o trecho em destaque, na estrutura existente.
package controle;
import
import
import
import
import
java.io.*;
javax.servlet.ServletException;
javax.servlet.http.*;
persistencia.Banco;
modelo.Aluno;
public class servAluno extends HttpServlet {
private static final long serialVersionUID = 1L;
public servAluno() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
doPost(request,response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
response.setContentType("text/html");
PrintWriter saida = response.getWriter();
Aluno alu = new Aluno();
String dados = request.getParameter("btnBotao");
if (dados.equals("Incluir"))
{
try
{
alu.setMatricula(request.getParameter("txtMatricula"));
alu.setNome(request.getParameter("txtNome"));
alu.setEndereco(request.getParameter("txtEndereco"));
Banco banco = new Banco();
banco.incluirAluno(alu);
saida.println("<h1>Inclusão Efetuada com Sucesso</h1>");
saida.println("<a href='principal.html'>Retornar ao Menu</a>");
}
catch(Exception e)
{
saida.println("ERRO:"+e.getMessage());
}
}
if (dados.equals("Alterar"))
{
try
{
alu.setNome(request.getParameter("txtNome"));
alu.setMatricula(request.getParameter("txtMatricula"));
alu.setEndereco(request.getParameter("txtEndereco"));
Banco banco = new Banco();
banco.alterarAluno(alu);
saida.println("<h1>Alteração Efetuada com Sucesso</h1>");
saida.println("<a href='principal.html'>Retornar ao Menu</a>");
}
catch(Exception e)
{
saida.println("ERRO:"+e.getMessage());
}
}
if (dados.equals("Excluir"))
{
try{
Banco banco = new Banco();
banco.excluirAluno(request.getParameter("txtMatricula"));
saida.println("<h1>Exclusão Efetuada com Sucesso</h1>");
saida.println("<a href='principal.html'>Retornar ao Menu</a>");
}catch(Exception e){
saida.println("ERRO:"+e.getMessage());
}
}
}
}
DESENVOLVENDO O BOTÃO CONSULTAR
Observe a tela abaixo, e realize as alterações na Tela de Cadastro
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Cadastrando Alunos</title>
</head>
<body>
<h1>
<center>Cadastro de Alunos</center>
</h1>
<hr>
<center>
<form action="servAluno" method="get">
<table border=1>
<tr>
<td>Matrícula</td>
<td colspan="3"><input type="text" name="txtMatricula" size=30 /></td>
</tr>
<tr>
<td>Nome</td>
<td colspan="3"><input type="text" name="txtNome" size=30 /></td>
</tr>
<tr>
<td>Endereço</td>
<td colspan="3"><input type="text" name="txtEndereco" size=30 /></td>
</tr>
<tr>
<td><input type="submit" name="btnBotao" value="Incluir" /></td>
<td><input type="submit" name="btnBotao" value="Alterar" /></td>
<td><input type="submit" name="btnBotao" value="Excluir" /></td>
<td><input type="submit" name="btnBotao" value="Consultar" /></td>
</tr>
</table>
</form>
<a href="principal.html">Voltar ao Menu</a></center>
</body>
<html>
ALTERANDO A CLASSE BANCO
Adicione o trecho em destaque, na estrutura existente.
package persistencia;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import modelo.Aluno;
public class Banco {
private Connection con = null;
private Statement st = null;
private ResultSet rs =null;
public Banco() throws Exception{
con=Conectando.getConnection();
st=con.createStatement();
}
public void incluirAluno(Aluno alu)throws Exception{
st.executeUpdate("insert into
alunovalues('"+alu.getMatricula()+"','"+alu.getNome()+"','"+alu.getEndereco()+"')");
}
public void alterarAluno(Aluno alu)throws Exception {
st.executeUpdate("update aluno set nome='"+alu.getNome()+"',endereco='"+alu.getEndereco()+"' where
matricula='"+alu.getMatricula()+"'");
}
public void excluirAluno(String matricula)throws Exception {
st.executeUpdate("delete from aluno where matricula = '"+matricula+"'");
}
public Aluno consultarAluno(String matricula) throws Exception{
Aluno alu = null;
rs=st.executeQuery("select * from aluno where matricula='"+matricula+"'");
if(rs.next()){
alu = new Aluno();
alu.setMatricula(rs.getString(1));
alu.setNome(rs.getString(2));
alu.setEndereco(rs.getString(3));
}
return alu;
}
}
ALTERANDO O SERVALUNO
Adicione o trecho em destaque, na estrutura existente e observe os códigos adicionados para tratar possíveis exceções.
package controle;
import
import
import
import
import
import
import
import
java.io.*;
java.sql.SQLException;
javax.servlet.ServletException;
javax.servlet.http.*;
javax.swing.JOptionPane;
org.postgresql.util.PSQLException;
modelo.Aluno;
persistencia.Banco;
public class servAluno extends HttpServlet {
private static final long serialVersionUID = 1L;
public servAluno() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,
IOException {
doPost(request,response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,
IOException {
response.setContentType("text/html");
PrintWriter saida = response.getWriter();
Aluno alu = new Aluno();
String dados = request.getParameter("btnBotao");
if (dados.equals("Incluir"))
{
try
{
alu.setMatricula(request.getParameter("txtMatricula"));
alu.setNome(request.getParameter("txtNome"));
alu.setEndereco(request.getParameter("txtEndereco"));
Banco banco = new Banco();
banco.incluirAluno(alu);
saida.println("<h1>Inclusão Efetuada com Sucesso</h1>");
saida.println("<a href='principal.html'>Retornar ao Menu</a>");
}
catch (PSQLException e){
JOptionPane.showMessageDialog(null, "Matricula já existente");
response.sendRedirect("aluno.html");
} catch (Exception e) {
e.printStackTrace();
}
}
if (dados.equals("Alterar"))
{
try {
alu.setNome(request.getParameter("txtNome"));
alu.setMatricula(request.getParameter("txtMatricula"));
alu.setEndereco(request.getParameter("txtEndereco"));
Banco banco = new Banco();
banco.alterarAluno(alu);
saida.println("<h1>Alteração Efetuada com Sucesso</h1>");
saida.println("<a href='principal.html'>Retornar ao Menu</a>");
}
catch (Exception e) {
e.printStackTrace();
}
}
if (dados.equals("Excluir"))
{
try{
Banco banco = new Banco();
banco.excluirAluno(request.getParameter("txtMatricula"));
saida.println("<h1>Exclusão Efetuada com Sucesso</h1>");
saida.println("<a href='principal.html'>Retornar ao Menu</a>");
} catch (Exception e) {
saida.println("erro" + e.getMessage());
}
}
if(dados.equals("Consultar"))
{
try{
Banco banco = new Banco();
alu = banco.consultarAluno(request.getParameter("txtMatricula"));
saida.println("Matrícula Selecionada: "+ alu.getMatricula()+ "<br>");
saida.println("Nome do Aluno: " + alu.getNome()+"<br>");
saida.println("Endereço: " + alu.getEndereco()+"<br>");
saida.println("<a href='principal.html'>Retornar ao Menu</a>");
}catch (NullPointerException e)
{
JOptionPane.showMessageDialog(null, "Matricula não encontrada");
response.sendRedirect("aluno.html");
} catch (SQLException e) {
saida.println("erro" + e.getMessage());
} catch (Exception e) {
saida.println("erro" + e.getMessage());
}
}
}
}
LISTAGEM DE ALUNOS
01. Desenvolvendo a opção Listagem de Alunos Cadastrados (exibirAlunos.jsp)
<%@ page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Listagem de Alunos</title>
</head>
<body>
<h2>Listagem de Alunos Cadastrados</h2><hr>
<table border="1">
<thead>
<tr>
<th>Matricula</th>
<th>Nome</th>
<th>Endereço</th>
</tr>
</thead>
<tbody>
<%
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
Class.forName("org.postgresql.Driver").newInstance();
conn = DriverManager.getConnection("jdbc:postgresql:escola","postgres", "postgres");
st = conn.createStatement();
rs = st.executeQuery("select matricula, nome, endereco from aluno");
while (rs.next())
{
%>
<tr>
<td><%=rs.getString("matricula")%></td>
<td><%=rs.getString("nome")%></td>
<td><%=rs.getString("endereco")%></td>
</tr>
<%
}//end while
} catch (Exception ex) {
ex.printStackTrace();
} finally {
if (rs != null)
rs.close();
if (st != null)
st.close();
if (conn != null)
conn.close();
}
%>
</tbody>
</table>
<a href="principal.html">Voltar ao Menu</a>
</body>
</html>
OBSERVAÇÕES DA CLASSE exibirAlunos.jsp
Dentro do bloco try...catch você define o trabalho com banco de Dados para se conectar e executar
a instrução SQL.
Ao importar o pacote Java.sql.*, através da diretiva Page, você tem acesso às classes e interfaces para
manipular os bancos de dados relacionais em Java.
O driver de banco de dados deve ser empregado antes do programa se conectar ao banco de dados.
A linha anterior utiliza o método static forName da classe Class (pacote Java.lang) para carregar a definição de classe para
o Driver de Banco de Dados.
Se a classe não for localizada, ele dispara uma exceção: Java.lang.ClassNotFoundException.
Um objeto Connection gerencia a conexão entre o programa Java e o banco de dados. Ele também fornece suporte ao
programa para executar instrução SQL.
Através do método static getConnection, a classe DriverManager tenta uma conexão com o banco de dados especificado
pela String: (p/postgresql: jdbc:postgresql:escola) e (p/MYSQL: jdbc:mysql://localhost/escola). Os argumentos seguintes são
nome de usuário e senha, demonstrados pela String (p/postgresql: postgres e postgres) e (p/MYSQL: root e root)
respectivamente.
Caso a classe DriverManager não consiga se conectar ao banco de dados, o método getConnection dispara uma exceção.
A responsabilidade principal da interface Statement é executar sentenças SQL no banco de dados.
Com o método público createStatement você cria um objeto Statement para enviar declarações SQL ao banco de dados. Se
houver um erro, dispara também uma exceção java.sql.SQLException.
Com o método executeQuery, você tem o retorno de um objeto que implementa ResultSet e que contém resultados da
consulta.
Através de um loop while você varre os resultados encontrados, onde o método next(), de ResultSet, retorna um valor
booleano true, quando o resultado das linhas pesquisadas na query forem exauridas.
O método getString(), de ResultSet, traz o valor da coluna designada na fila atual deste ResultSet como uma String na
linguagem Java.
Depois de consumidos, os recursos devem ser retornados ao servidor, utilizando o método close(). Nesse caso a cláusula
usada é finally, que liberará os recursos, caso os resultados sejam bem sucedidos ou não.
Download