Upload
luiz-ricardo-silva
View
328
Download
2
Embed Size (px)
DESCRIPTION
Slides para aula de como acessar bancos de dados em Java usando JDBC. A apresentação é curta, mas inclui as principais informações sobre a API JDBC (DataSource, Connection, Statement, PreparedStatement) e exemplos de código para explanação. O código-fonte de exemplo está disponível no GitHub: https://github.com/utluiz/jdbc-example
Citation preview
Acesso a Banco de
dados com JDBC
12/09/2014
Direitos Autorais
Você está autorizado e incentivado a distribuir este material.
Copie, compartilhe e modifique, apenas cite a fonte.
Direitos Autorais
Luiz Ricardo
luizricardo.org
facebook.com/StateOfTheArtBlog
JDBC
• JDBC é uma interface de acesso padrão a bancos de
dados relacionais (SGBDR)
• É uma API, portanto precisa de implementações
• Gerencia a conexão e o protocolo de comunicação
com o banco
• O acesso é por SQL
Java DataBase Connectivity
JDBC
• Praticamente todos os bancos de dados fornecem
Drivers JDBC
• Comandos SQL são nativos e não portáveis (a não ser
os comandos básicos no padrão ANSI)
Interoperabilidade
JDBC
Arquitetura
Aplicação Java
JDBC API
JDBC Driver Manager
Oracle Driver MySQL Driver SQL Server Driver
Oracle MySQLSQL
Server
Abrindo a Conexão
DriverManager
DriverManager.getConnection(
url, usuario, senha
);
Abrindo a Conexão
DataSource
DataSource dataSource = ...
dataSource.getConnection();
Conexão
Connection
Connection con =
DriverManager.getConnection(
url, usuario, senha);
Consulta
Statement
Statement s = con.createStatement();
s.executeQuery("select * from TABELA")
Consulta
PreparedStatement
PreparedStatement ps =
con.prepareStatement(
"select * from TABELA where id=?");
ps.setInt(1, id);
ps.executeQuery();
Resultado
ResultSet
ResultSet rs = ps.executeQuery();
if (rs.next()) {
Integer id = rs.getInt("id"));
String descricao =
rs.getString("descricao");
}
Vários Resultados
ResultSet
ResultSet rs = ps.executeQuery();
List<MeuObjeto> lista =
new ArrayList<MeuObjeto>();
while (rs.next()) {
Integer id = rs.getInt("id"));
String descricao =
rs.getString("descricao");
lista.add( new MeuObjeto(id, des) );
}
Inserir
PreparedStatement ps =
con.prepareStatement(
"insert into TABELA (descricao)
values (?)");
ps.setString(1, descricao);
ps.executeUpdate();
Atualizar
PreparedStatement ps =
con.prepareStatement(
"update TABELA set descricao = ?
where id = ? ");
ps.setString(1, descricao);
ps.setInt(2, id);
ps.executeUpdate();
Apagar
PreparedStatement ps =
con.prepareStatement(
"delete TABELA where id = ?");
ps.setInt(1, id);
ps.executeUpdate();
Procedimentos
CallableStatement
CallableStatement cs = con.prepareCall(
"{call MINHA_PROC(?, ?)}" );
cs.setString(1, parametroUm);
cs.registerOutParameter(2, Types.VARCHAR);
cs.executeQuery();
String retorno = cs.getString(2);
DAO
• Um objeto que provê uma interface que abstrai o
acesso a dados
• Lê e grava os dados na origem de dados (banco de
dados, arquivo, memória, etc.)
• Encapsula o acesso aos dados, de forma que as
demais classes não precisam saber sobre isso
Data Access Object
Arquitetura de N Camadas
View (JSP)
Controller
Service
DAO
Banco de
Dados
Exercício
• Crie uma tabela no banco de dados
• Implemente o respectivo DAO, utilizando o
modelo provido junto com este material
Referências
• Java Tutorial– http://docs.oracle.com/javase/tutorial/jdbc/basics/
Não tenha medo...
Dúvidas?