Programação Orientada a Objetos (DPADF 0063)

Documentos relacionados
Programação com Acesso a Banco de Dados

Banco de Dados. Banco de Dados. Alcides Pamplona Alcides Pamplona Linguagem de Programação CESBD 2010

Java & Bancos de Dados Adaptado de Slides da Universidade Salgado de Oliveira Goiânia

Acesso a Bancos de Dados em Java (JDBC)

Curso de Java. Acesso a banco de dados através de JDBC. Todos os direitos reservados Klais

Integrando Java com Banco de Dados

Manipulação de Banco de Dados com Java. Ms. Bruno Crestani Calegaro Maio/ 2015

Programação Orientada a Objetos JDBC Java Database Connectivity

Laboratório de Banco de Dados Aula 1 Acesso a Banco de Dados. Prof. Josenildo Silva jcsilva@ifma.edu.br

Aula 1 Acesso a Banco de Dados

JAVA JDBC Java Database Connectivity

Acesso a Bancos de Dados (JDBC) Autor: Cleyton Maciel (clayton.maciel@ifrn.edu.br) Adaptação: Pedro Baesse (pedro.baesse@ifrn.edu.

INTRODUÇÃO. No entanto, o que pode ser considerado um produto (resultado) da criação de BDs?

Banco de Dados. Prof. Leonardo Barreto Campos 1

JDBC. Java DataBase Connectivity

PadrãoIX. Módulo II JAVA. Marcio de Carvalho Victorino. JDBC - Java Database Connectivity A,L,F,M

Manipulação de Banco de Dados com Java 1. Objetivos

Desenvolvimento Web TCC Turma A-1

JDBC Acessando Banco de Dados

JDBC Java Database Connectivity

Programação WEB (JSP + Banco Dados) Eng. Computação Prof. Rodrigo Rocha

SQL BANCO DE DADOS. Linguagem de consulta SQL. Linguagem de consulta SQL. Linguagem de Consulta Estruturada

Acesso a Banco. Conexão em Java. Conexão em Java. Programação Orientada a Objetos Profa. Cristiane e Prof. Daniel

DSS 09/10. DSS 09/10 Que métodos é que fazem parte de cada camada? Aplicações Multi-camada JDBC. Aula 3 DSS 09/10

Curso PHP Aula 08. Bruno Falcão

Java Básico JDBC. Razer Anthom Nizer Rojas Montaño Banco de Dados: JDBC

DSS 08/09. Camada de Dados - JDBC. Aula 1. António Nestor Ribeiro /António Ramires Fernandes/ José Creissac Campos {anr,arf,jfc}@di.uminho.

JAVA JDBC COMO FUNCIONA. Programação Orientada a Objetos Flávio de Oliveira Silva 315. Programação Orientada a Objetos Flávio de Oliveira Silva 316

Java e Conexão com Banco de Dados

Programação em Rede JDBC

Conectividade de Banco de Dados Java JDBC

Java JDBC - I. Ex. 2: para o SQLServer da Microsoft, o driver JDBC pode ser obtido em

Linguagens de Programação

PHP INTEGRAÇÃO COM MYSQL PARTE 1

Persistência de Classes em Tabelas de Banco de Dados

Acessando bancos de dados com o JDBC

JDBC. Prof. Márcio Bueno

Módulo 5 - JDBC java.sql - Conexão com Banco de Dados

Structured Query Language (SQL) Aula Prática

Banco de Dados. Aula 1 - Prof. Bruno Moreno 16/08/2011

Java Beans e Servlets

Orientação a Objetos

Banco de dados POO Márcio Delamaro. Programação Orientada a Objetos Prof Marcio Delamaro ICMC/USP

(UFF) JDBC (I) TEPIS II

Prof.: Clayton Maciel Costa

LINGUAGEM SQL. SQL Server 2008 Comandos iniciais

Aula 4 JDBC - Java Database Connectivity

Structured Query Language (SQL) Ambiente Simplificado de um SGBD

Leonardo Gresta Paulino Murta

Banco de Dados. Sérgio Luiz Ruivace Cerqueira

JDBC - Java Data Base Connectivity

JDBC (Java Database Connectivity) Padrão de Projeto DAO (Data Access Object) Roteiro para instalação do banco de dados e do driver JDBC

Java na Web. Aplicações Web

Capítulo 1. Acesso a Banco de Dados com JDBC (Java Database Connectivity) e o Padrão de Projeto DAO (Data Access Object)

Android e Bancos de Dados

BD SQL Server. Licenciatura em Engenharia Informática e Computação. Bases de Dados 2003/04

Introdução à Engenharia da Computação. Banco de Dados Professor Machado

JPA: Persistência padronizada em Java

JDBC. Siga as instruções para instalar o banco de dados H2 e criar a tabela Alunos.

Manipulação de Dados em PHP (Visualizar, Inserir, Atualizar e Excluir) Parte 2

De forma simples, para a execução de comandos SQL com JDBC, precisa-se da instancia de três classes Java. São elas: Nome da classe Função

Modelo Cliente/Servidor Por HIARLY ALVES

Acessando dados em Java com JDBC

O que são Bancos de Dados?

Especialização em web com interfaces ricas

Projetar Arquitetura

LINGUAGEM DE BANCO DE DADOS

JAVA 14 ODBC / JDBC Aceder a Bases de Dados através da Internet. Vitor Vaz da Silva

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

Bases de Dados 2007/2008. Aula 8

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

Triggers em PostgreSQL. Linguagem de Programação de Banco de Dados. Triggers em PostgreSQL. Triggers em PostgreSQL

Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL

PHP INTEGRAÇÃO COM MYSQL PARTE 2

Desenvolvimento de Aplicações para Internet Aula 9

Acesso a Bancos de Dados (JDBC) Desenvolvimento de Aplicações em Java O QUE É JDBC JAVA E JDBC CARACTERÍSTICAS DE JDBC

Sistemas de Banco de Dados

Banco de Dados. Maurício Edgar Stivanello

SQL. Autor: Renata Viegas

Acesso a banco de dados

Fernando Freitas Costa. Pós-Graduando em Gestão e Docência Universitária. blog.fimes.edu.br/fernando nando@fimes.edu.br

A linguagem SQL

Banco de Dados. Profª. Ana Leda

Figura 1. A Classe Java

Banco de Dados. Um momento crucial na organização dos dados é a forma com que cadastramos estes dados, a estrutura de armazenamento que criamos.

Desenvolvendo Aplicações Web com NetBeans

Armazenamento organizado facilitando SCRUD; Agiliza processo de desenvolvimento de sistemas;

Execução de Instruções SQL

Introdução a Sistemas de Bancos de Dados

Hoje é inegável que a sobrevivência das organizações depende de dados precisos e atualizados.

SQL Linguagem de Definição de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

BANCO DE DADOS. info 3º ano. Prof. Diemesleno Souza Carvalho

Transcrição:

Programação Orientada a Objetos (DPADF 0063) Aula 9 JDBC (Java Database Connectivity) Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior de Tecnologia em Sistemas para Internet Prof. Bruno B. Boniati www.cafw.ufsm.br/~bruno

Conexão e manipulação de bases de dados relacionais

Conceitos Banco de dados Coleção organizada de dados; SGBD ou DBMS Sistema Gerenciador de Banco de dados (Database Management System) SQL (Structured Query Language) Linguagem padrão para definição, consulta e manipulação de dados em SGBDs relacionais.

Desenvolvimento de aplicações em camadas Com a utilização de um SGBD o desenvolvimento do software passa a ser dividido em camadas lógicas... Camada de lógica Camada de dados Camada de dados Fisicamente em um único computador Camada de lógica Fisicamente em computadores diferentes

Java e Banco de Dados Como temos camadas de software independentes, precisamos de um DRIVER para intermediar a comunicação entre elas; Um driver JDBC permite aos aplicativos Java conectar-se a um banco de dados em um SGBD particular e manipular seus dados utilizando uma API. Drivers JDBC normalmente são fornecidos pelos fabricantes ou comunidades de usuários (http://devapp.sun.com/product/jdbc/drivers)

Interfaces e Classes JDBC Para conectar a um banco de dados, recuperar e manipular informações, precisamos de pelo menos três objetos: Connection Banco de Dados ResultSet Statement

Conectando um banco de dados Connection Gerencia a conexão entre o programa Java e o banco de dados. //Url de conexão String db_url = "jdbc:mysql://localhost/books"; //Carrega a o driver apropriado Class.forName( "com.mysql.jdbc.driver" ) //Declara a conexão Connection con = null; //Obtém uma instância para o objeto que representa a conexão con = DriverManager.getConnection(db_url, "user", "senha");

Class.forName( "com.mysql.jdbc.driver" ) x import com.mysql.jdbc.driver; Driver driver = new Driver(); Ambos os códigos acima fazem a mesma coisa... No primeiro caso o método forname da classe Class tenta carregar dinâmicamente a classe passada como parâmetro (com.mysql.jdbc.driver) No segundo caso a classe é instanciada de forma estática (fixa no código). Qual das duas alternativas é melhor? No primeiro caso, se o banco de dados for alterado basta alterar a string que representa o driver, no segundo caso todo o código precisa ser alterado.

Drivers JDBC SGBD Formato da URL de conexão jdbc:oracle:thin:@host:porta:nomebd (Porta padrão 1521) jdbc:postgresql://host:porta/nomebd (Porta padrão 5432) jdbc:db2://host:porta/nomebd (Porta padrão 446, 6789, ou 50000) jdbc:sqlserver://host:porta;databasename=nomebd (Porta padrão 1433) jdbc:mysql://host:porta/nomebd (Porta padrão 3306) jdbc:firebirdsql:host/porta:caminhoarquivo.fdb (Porta padrão 3050) jdbc:sqlite:caminhoarquivo jdbc:odbc:nomebd

Executando instruções SQL Statement Executa instruções SQL em uma base de dados //String para armazenar o comando SQL String sql_ins = "insert into alunos (id, nome) values(1, 'Ana')"; //Cria o objeto a partir da conexão Statement stmt = con.createstatement(); //Executa o comando de atualização pré-definido int linhas_afetadas = stmt.executeupdate(sql_ins); //Retorna o número de linhas afetadas (insert, delete, update) //ou zero (comandos como grant, alter, create).

Executando instruções SQL PreparedStatement Instruções pré-compiladas Executa instruções SQL pré-compiladas em uma base de dados //String para armazenar o comando SQL genérico String sql_ins = "insert into alunos (id, nome) values(?,?)"; //Cria o objeto a partir da conexão PreparedStatement stmtalunos = con.preparestatement(sql_ins); //Ajusta os parâmetros do comando SQL stmtalunos.setinteger(1, 10); //parâmetro 1 = 10 (id) stmtalunos.setstring(2, "Ana"); //parâmetro 2 = Ana (Nome) //Executa o comando de atualização pré-compilado int linhas_afetadas = stmtalunos.executeupdate();

Recuperando dados ResultSet Recupera um conjunto de dados de um comando de seleção //String para armazenar o comando SQL genérico String sql_sel = "select id, nome from alunos"; //Cria um objeto Statement a partir da conexão para enviar o SQL Statement stmt = con.createstatement(); //Declara o conjunto de dados ResultSet dados; //Executa a instrução de consulta e guarda o resultado dados = stmt.executequery(sql_sel);

Utilizando de dados de um resultado ResultSet TYPE_SCROLL_INSENSITIVE Permite navegar para frente e para traz no ResultSet CONCUR_READ_ONLY Impede que os dados ResultSet sejam atualizados no BD Statement stmt = con.createstatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); ResultSet dados = stmt.executequery("select id, nome from alunos"); //Percorre o ResultSet listando os dados da coluna 2 while ( dados.next() ) { //Enquanto houver um próximo registro String nomealuno = dados.getstring(2); System.out.println(nomeAluno); } dados.first(); //posiciona no primeiro registro do ResultSet //Percorre o ResultSet listando os dados da coluna "NOME_ALUNO" while ( dados.next() ) { String nomealuno = dados.getstring("nome_aluno"); System.out.println(nomeAluno); }

Obtendo metadados (dados sobre os dados) ResultSetMetaData ResultSet dados = stmt.executequery("select id, nome from alunos"); ResultSetMetaData metadados = dados.getmetadata(); int numcolunas = metadados.getcolumncount(); //Percorre e lista as colunas resultantes da consulta for (int i = 1; i<=numcolunas; i++) { String nomecoluna = metadados.getcolumnname(i); String tipocoluna = metadados.getcolumntypename(i); System.out.println(nomeColuna + " é do tipo " + tipocoluna); }

Exercícios para fixação

Construtor SQL... Que tal implementar uma ferramenta para execução interativa de SQL. O construtor SQL deve permitir: Conectar; Desconectar; Abrir consultas SQL; Executar comandos SQL (create, delete, insert, update)