Beruflich Dokumente
Kultur Dokumente
Dentro do pacote que voc acabou de criar, crie uma classe chamada Aluno que deve ter o
seguinte cdigo:
package br.edu.ufabc.prograd.modelo;
public class Aluno {
private
private
private
private
Long id;
String nome;
String email;
String endereco;
Observe que criamos o atributo id do tipo Long no do tipo long, porque Long inicia o
atributo com valor default null. Fazemos assim para no dar erro na insero do banco
de dados.
Dentro do pacote recm-criado, crie uma classe chamada CriaAluno que deve ter o
seguinte cdigo:
package br.edu.ufabc.prograd.testes;
import br.edu.ufabc.prograd.modelo.Aluno;
public class CriaAluno
System.out.println(aluno.getNome());
System.out.println(aluno.getEmail());
System.out.println(aluno.getEndereco());
}
System.out.println(aluno.getId());
JDBC (Java DataBase Connectivity): conjunto de interfaces bem definidas dentro do pacote
java.sql;
driver JDBC: classes concretas que fazem ponte entre API JDBC e o BD;
package br.edu.ufabc.prograd.jdbc;
public class ConnectionFactory {
public Connection getConnection(){
System.out.println("Conectando ao banco de dados");
try {
// a linha abaixo no mais necessria a partir do JDBC 4 (Java 6)
//Class.forName("org.h2.Driver");
return
DriverManager.getConnection("jdbc:h2:tcp://localhost/~poo","admin","admin");
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
adicione os imports necessrios (java.sql.Connection e java.sql.DriverManager);
importncia de criar uma fbrica de conexes: um nico lugar para mudar, caso
necessrio; possibilidade de criar pooling de conexes; seguimos padres de projeto a
respeito de encapsular construo de objetos complicados (livro Padres de Projeto da Gang
of four);
Crie um pacote que ser responsvel por objetos de acessos aos dados (DAO - Data Access
Object): br.edu.ufabc.prograd.dao
(?,?,?)";
// fecha statement
stmt.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
String
sql
=
"insert
into
alunos
('"+nome+"','"+email+"'+'"+endereco+"')";
1. difcil de ler;
(nome,email,endereco)
values
SQL Injection: tcnica usada para atacar aplicaes orientadas a dados. Ilustrao:
http://xkcd.com/327/
1. PreparedStatement: interface para executar as clusulas, faz sanitizao das entradas do BD;
ACESSANDO E MODIFICANDO OS DADOS DO BANCO DE DADOS (REMOVER,
ALTERAR E LISTAR):
id=?";
PreparedStatement stmt;
try {
stmt = this.connection.prepareStatement("select * from alunos
order by nome");
ResultSet rs = stmt.executeQuery(); // importar java.sql
while (rs.next()) {
Aluno aluno = new Aluno();
aluno.setId(rs.getLong("id"));
aluno.setNome(rs.getString("nome"));
aluno.setEmail(rs.getString("email"));
aluno.setEndereco(rs.getString("endereco"));
alunos.add(aluno);
}
rs.close();
stmt.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
return alunos;
}
// listando registros
AlunoDAO dao = new AlunoDAO();
List<Aluno> alunos = dao.getLista();
for (Aluno aluno1 : alunos){
System.out.println("Nome: "+aluno1.getNome()+" Email: "+aluno1
.getEmail()+" Endereo: "+ aluno1.getEndereco());
}
Use os mtodos criados para inserir, remover, alterar e listar para fazer testes com o banco
de dados atravs da aplicao Java. Usando o comando SQL select, cheque no BD as
alteraes realizadas.