Java na WEB Banco de Dados



Documentos relacionados
Persistência de Classes em Tabelas de Banco de Dados

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

Programação Orientada a Objetos JDBC Java Database Connectivity

Integrando Java com Banco de Dados

Aula 1 Acesso a Banco de Dados

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

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

Programação Orientada a Objetos II

JDBC Java Database Connectivity

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

Driver Mysql para Banco de Dados. Conexão com um Banco de Dados

Leonardo Gresta Paulino Murta

Programação com Acesso a Banco de Dados

JDBC. Prof. Márcio Bueno

Faculdades Network Bacharelado em Sistemas de Informação Tópicos Avançados. Aulas 25 e 26 Exemplo de Aplicação usando JSP e MySQL

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

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

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

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

JAVA JDBC Java Database Connectivity

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

Acesso a banco de dados

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

Orientação a Objetos

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

SISTEMA EXPERIMENTALL 15/11/2009. Olá! A partir de agora vamos conhecer a IDE NetBeans efetuando um micro projeto swing.

Front-End Uso da Linguagem Turbo Delphi para Acesso ao Banco de Dados Mysql

Acesso a Bancos de Dados em Java (JDBC)

Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL.

UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN CURSO SUPERIOR DE TECNOLOGIA EM SISTEMAS PARA INTERNET. Programação para Internet I

Drive MySql de conexão para Eclipse

JDBC Acessando Banco de Dados

Autenticação e Autorização

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

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

Mini-Tutorial. Como criar relatórios Java para Web com JasperReports e ireport por Roberto J. Furutani 20/07/2005

Especialização em web com interfaces ricas

Desenvolvimento Web TCC Turma A-1

C# - Conexão com MySQL

BANCO DE DADOS BANCO DE DADOS. Prof. Patrícia Lucas 3º Trimestre

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

Aula 03 - Projeto Java Web

Persistência de Classe e Auto- Relacionamento em Tabelas de Banco de Dados

Banco de Dados. Prof. Leonardo Barreto Campos 1

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 na WEB Componentes Bean

Java e Conexão com Banco de Dados

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

JDBC. Java DataBase Connectivity

JAVA COM BANCO DE DADOS PROFESSORA DANIELA PIRES

Desenvolvimento de Sistemas de Informação

TUTORIAL DE INTRODUÇÃO AO CEWOLF

Curso: Desenvolvimento Java

Conectividade de Banco de Dados Java JDBC

22/05/2012 CRIANDO UM PROJETO COM TELAS ESTRUTURA DA APLICAÇÃO LOGIN BANCO DE DADOS TAREFAS PHP MYSQL PARTE 2

JDBC (Fundamentos) Sang Shin Java Technology Architect Sun Microsystems, Inc.

Roteiro 9 - SQL Básico: chave estrangeira, operadores de comparação e operadores booleanos

JavaServer Faces JSF

Curso de Aprendizado Industrial Desenvolvedor WEB

Java na Web. Aplicações Web

MANUAL INSTALAÇÃO WEB SERVICE

Android e Bancos de Dados

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

Programação em Rede JDBC

Introdução ao Sistema. Características

Prática Sobre Servlets e JSP

Listando, gravando, alterando e excluindo registro do banco de dados com JSP

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

Figura 1. A Classe Java

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

Programação Orientada a Objetos (DPADF 0063)

Persistência de Objetos no SGBD PostgreSQL, Utilizando as APIs: JDBC, JDK, Swing e Design Patteners DAO.

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

Linguagens de Programação

Acessando bancos de dados com o JDBC

Unidade 9: Middleware JDBC para Criação de Beans

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

Java Beans e Servlets

JPA: Persistência padronizada em Java

Curso PHP Aula 08. Bruno Falcão

Funcionamento da Aplicação. Simulações do funcionamento. Simulação SAC

Trabalhando com conexão ao banco de dados MySQL no Lazarus. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

Java JDBC Aplicação Java com Acesso a um SGBD. Ricardo Terra (rterrabh [at] gmail.com) Java JDBC Maio, 2010

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS ARMAZENAMENTO EM BD NO DM. Prof. Angelo Augusto Frozza, M.Sc.

Padrões de Projeto e Persistência com DAO

Boletim Técnico. : 05/08/2013 Data da revisão : 16/10/13 Banco(s) de Dados

8. Outros tipos de Transação (Modo de Transação de Autoconfirmação e Modo Implícito)

Banco de Dados. Sérgio Luiz Ruivace Cerqueira

INSTALANDO E CONFIGURANDO O MY SQL

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS ARMAZENAMENTO EM BD NO DM. Prof. Angelo Augusto Frozza, M.Sc.

PHP INTEGRAÇÃO COM MYSQL PARTE 1

AULA 8 CRIANDO UMA CLASSE EM PHP INTERAGINDO COM BANCO DE DADOS - COM RELACIONAMENTO ENTRE TABELAS

Desenvolvimento de Aplicações para Internet Aula 9

Aplicabilidade: visão geral

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

Exercício 1 : As classes abaixo serão utilizadas neste exercício: public class Ponto { int x; int y; public Ponto(int x, int y){ this.

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE ESCOLA AGRÍCOLA DE JUNDIAÍ EAJ - PRONATEC / REDE etec MÓDULO III DESENVOLVIMENTO PROFESSOR ADDSON COSTA

Transcrição:

1 Java na WEB Banco de Dados Objetivo: Ao final da aula o aluno será capaz de: Criar aplicações JSP com acesso ao Banco de Dados MySql Configurar o TomCat para acessar o MySql. Não é Objetivo: Ao final da aula o aluno não será capaz de: Desenvolver e implementar estruturas de Banco de Dados. Desenvolver instruções SQL complexas. Sumário 9. O Banco de Dados MYSQL:... 2 9.1 A instalação do MySQL.... 2 9.2 Ferramentas de Apoio... 4 9.3 Modificações no TomCat.... 5 9.4 Definição de Esquema... 6 9.5 Criação de Tabela... 6 10. Acesso ao Banco de Dados.... 8 10. 1 Como acessar o banco de dados?... 8 10.2 Como emitir Relatórios em páginas JSP?... 10 10.3 Inserção de Registro... 14 10.4 Exercício:... 15

2 9. O Banco de Dados MYSQL: O servidor de Banco de Dados MySql é um servidor que pode ser utilizado para o desenvolvimento de aplicações para a web. O programa de instalação pode ser obtido a partir do web site da MySQL AB. Da página da MySQL AB, os seguintes arquivos necessitam ser baixados e instalados: 9.1 A instalação do MySQL. Recomenda-se que a instalação do MySQL seja feita no diretório Arquivos de Programas ou Program Files. Durante a instalação do MySql, algumas perguntas são feitas. Pode-se utilizar os valores recomendados pelo programa de instalação. As próximas figuras ilustram algumas telas que serão apresentadas durante o processo de instalação. Figura 1-Ilustração da Tela Inicial da Instalação do MySQL

3 Figura 2-Interface que permite selecionar o tipo de Configuração Figura 3-Interface que permite especificar qual a porta que será Monitorada pelo Servidor. O valor padrão é a 3306 que, se possível, deverá ser mantido.

4 Figura 4-Interface que permite especificar se o serivodr será instalado como um serviço no Windows O MySQL cria um usuário root cuja senha necessitará ser definida durante a instalação. Como sugestão, recomenda-se que a senha também seja root. 9.2 Ferramentas de Apoio Após ser feita a instalação do MySQL, recomenda-se a instalação das ferramentas de apoio ao MySQL (mysql-gui-tools) também seja feita no Arquivos de Programas\MySql ou Program Files\MySql. Após as duas instalações, a seguinte estrutura deverá estar disponível: Figura 5-Esturutuda das Aplicaçãoes no Gerenciador de Programas.

5 9.3 Modificações no TomCat. Após ter executado o arquivo mysql-conector, os conectores de acesso ao banco, o banco MySQL e as ferramentas de apoio estarão disponíveis na pasta Arquivos de Programas\MySQL, conforme ilustra a Figura 6. e Figura 6-Sugestão de Estrutura de Diretórios Um arquivo precisa ser transportado da pasta mysql-connector-java-5.1.7 para a pasta commom\lib do TomCat. Esse arquivo é mysql-connector-java-5.1.7-bin.jar, conforme destacado na figura a seguir. Figura 7-Local que o arquivo mysql-connector-java-5.1.7-bin.jar deve ser armazenado. Esse arquivo possui as informações necessárias para o TomCat acessar o Banco de Dados MySql e deve estar localizado na pasta commom\lib.

6 9.4 Definição de Esquema O MySQL QueryBrowser permite a criação de esquemas, tabelas entre outras atividade do banco de dados. Com o botão direito do mouse, crie um novo esquema. Para manter a compatibilidade com o resto deste material de apoio, defina o nome do esquema para lojinha, conforme ilustrado a seguir. Figura 8-Definição do Esquema na Ferramenta MySQL QueryBrowser 9.5 Criação de Tabela Após ter criado o esquema, crie uma tabela conforme ilustrado a seguir: create table produto (codigo int unsigned not null auto_increment, nome varchar(100) not null, valor double, primary key(codigo) ) engine=innodb default charset=latin1;

7 Figura 9-Definição de Tabela no MySQL QueryBrowser Essa tabela será utilizada durante o transcorrer deste material de apoio ao estudo.

8 10. Acesso ao Banco de Dados. Neste material será apresentado como páginas JSP podem acessar informações de um banco de dados. Para esse acesso, dois aspectos são importantes, a saber: Classes para criação de Conexões: java.sql.drivermanager, java.sql.driver e java.sql.connection. Classes de Acesso ao Banco: java.sql.statement ou java.sql.preparestatement e java.sql.resultset. Exemplos dessas classes são apresentados a seguir. 10. 1 Como acessar o banco de dados? O acesso ao banco de dados pode ser realizado por uma classe Java específica, conforme o exemplo a seguir: /*01*/ package javanaweb.bd; /*02*/ import java.sql.*; /*03*/ public class Conectar /*04*/ { /*05*/ private static Connection con; /*06*/ private static Statement stm; /*07*/ private static String bd= /*08*/ "jdbc:mysql://localhost:3306/lojinha"; /*09*/ private static String driver= /*10*/ "com.mysql.jdbc.driver"; /*11*/ private static String usuario="root"; /*12*/ private static String senha="root"; /*13*/ public static void open() throws Exception /*14*/ { /*15*/ Class.forName(driver); /*16*/ con= /*17*/ DriverManager.getConnection(bd,usuario,senha); /*18*/ stm=con.createstatement(); /*19*/ } /*20*/ public static void close() throws Exception /*21*/ { if (closed()==false) /*22*/ { stm.close(); /*23*/ con.close();} /*24*/ }

9 /*25*/ public static boolean closed() throws Exception /*26*/ { /*27*/ return ((stm == null) && (con == null)); /*28*/ } /*29*/ public static ResultSet executequery(string sql) /*30*/ throws Exception /*31*/ { /*32*/ if (closed() ) open(); /*33*/ return stm.executequery(sql); /*34*/ } /*35*/ public static void setbd(string v){bd=v;} /*36*/ public static String getbd(){return bd;} /*37*/ public static void executeinsert(int codigo /*38*/, String nome, double valor) throws Exception /*39*/ { /*40*/ String comando= /*41*/ "insert into produto (codigo, nome, valor) values (" /*42*/ + codigo /*43*/ + ", \'" + nome + "\'" /*44*/ + "," + valor + ")"; /*45*/ executeme(comando); /*46*/ } /*47*/ public static void executeupdate(int codigo /*48*/, String nome, double valor) throws Exception /*49*/ { /*50*/ String comando= /*51*/ "update produto set nome=\'" + nome + "\'" /*52*/ + ", valor=" + valor /*53*/ + " where codigo=" + codigo; /*54*/ executeme(comando); /*55*/ } /*56*/ public static void delete(int codigo) /*57*/ throws Exception /*58*/ {

10 /*59*/ String comando="delete from produto where codigo=" /*60*/ + codigo; /*61*/ executeme(comando); /*62*/ } /*63*/ private static void executeme(string comando) /*64*/ throws Exception /*65*/ { /*66*/ if (closed() ) open(); /*67*/ stm.executeupdate(comando); /*68*/ } /*69*/ } Essa classe deverá ser compilada e armazenada na pasta WEB-INF\classes\javaNaWeb\BD do TomCat. 10.2 Como emitir Relatórios em páginas JSP? A estratégia, nesse caso, é simples. Na página JSP, inserir na diretiva import a referência para a classe específica criada em 10.1 (javanaweb.bd.*) e para o pacote de acesso a bando de dados (java.sql.*). Os métodos da classe javanaweb.bd.conectar foram definidos com o atributo static, ou seja, não há a necessidade de instanciar essa classe para poder utilizar os seus métodos. Por exemplo, na linha /*09*/ do código a seguir, o método open() utilizado para abrir uma conexão com o banco, é chamado diretamente. Não há a necessidade de criar uma instância da classe javanaweb.bd.conectar para depois chamar o método open(). O objeto ResultSet, definido na linha /*10*/ do código a seguir, corresponde a uma tabela de dados representando um conjunto de resultados de uma pesquisa realizada no banco de dados. Por exemplo, essa pesquisa poderia ser realizada através da instrução genérica select * from nomedatabela. Esse objeto ResultSet mantém um cursor apontando para a linha atual dos dados. Inicialmente, o cursor aponta para o (antes do) primeiro registro. O método next()

11 move o cursor para o próximo registro retornando true e esse método retorna false quando não existem mais registros. Um dado pode ser acessado através da instrução get<tipo>(int) e o número da coluna. As linhas /*17*/, /*18*/ e /*19*/ do código a seguir acessam as informações da coluna cujo nome é codigo e das colunas 2 e 3 no formato String. Os dados das colunas de uma tabela também poderiam ter sido acessados nos seguintes formatos entre outros: getarray(int ) / getarray(string) getblob(int) / getblob(string) getboolean(int)/getboolean(string) getbyte(int) / getbytes(string) getdate(int) /getdate(string) getdouble(int) / getdouble(string) getfloat(int) / getfloat(string) getint(int) / getint(string) getlong(int) / getlong(string) getobject(int) / getobject(string) <!-- arquivo relatoriobd.jsp --> <!--01--> <%@ page import="java.sql.*" %> <!--02--> <%@ page import="java.util.*" %> <!--03--> <%@ page import="java.text.*" %> <!--04--> <%@ page import="javanaweb.bd.*" %> <!--05--> <html> <!--06--> <body> <! -07--> <% /*08*/ String pesquisa = "select * from produto"; /*09*/ Conectar.open(); /*10*/ ResultSet rec; /*11*/ rec = Conectar.executeQuery(pesquisa); /*12*/ out.println("<center><table border=1><tr> /*13*/ + <th> Codigo </th><th> Nome </th> /*14*/ + <th> Valor </th></tr>"); /*15*/ while(rec.next()) /*16*/ { /*17*/ /*18*/ out.println("<tr><td>" + rec.getstring( codigo ) + "</td><td>" + rec.getstring(2) /*19*/ + "</td><td>" + rec.getstring(3)

12 /*20*/ + "</td></tr>"); /*21*/ } /*22*/ out.println("</table>"); /*23*/ Conectar.close(); /*24*/ %> <!--25--> </body> <!--26--> </html> Figura 10-Exemplo de Execução do Arquivo relatoriobd.jsp Outra opção de relatório é a definição de todo o código na página JSP. No exemplo a seguir, a classe Statement foi substituída pela PreparedStatement na linha 11. A PreparedStatement é uma classe muito similar com a classe Statement. A instrução SQL fornecida nas linhas 20 e 21, pstm = con.preparestatement("select * from produto where codigo =?");, define uma variável com o símbolo?. A definição do valor dessa variável é definida na linha 22 do código a seguir. A instrução pstm.setint(1,integer.parseint(codigo)); define que a primeira variável deve ser setada como um valor inteiro e o seu valor é obtido da instrução Integer.parseInt(codigo). <!-- arquivo relatoriobdmodificado.jsp --> <!--01--> <%@ page import="java.sql.*" %> <! -02--> <%@ page import="java.io.*" %> <%@ page import="java.util.*" %> <%@ page import="java.text.*" %> <! -03--> <html><body><center> <! -04--> <%! /*05*/ private String bd="jdbc:mysql://localhost:3306/lojinha"; /*07*/ private String driver="com.mysql.jdbc.driver"; /*08*/ private String usuario="root"; /*09*/ private String senha="root";

13 /*10*/ private Connection con; /*11*/ private PreparedStatement pstm; /*12*/ %> <! -13--> <% /*14*/ String codigo = request.getparameter("codigo"); /*15*/ out.println("<h3> Dados do Produto #" + codigo + "</h3>"); /*16*/ if (codigo!= null) /*17*/ { /*18*/ Class.forName(driver); /*19*/ con=drivermanager.getconnection(bd,usuario,senha); /*20*/ pstm= con.preparestatement( /*21*/ "select * from produto where codigo =?"); /*22*/ pstm.setint(1,integer.parseint(codigo)); /*23*/ ResultSet rs=pstm.executequery(); /*24*/ out.println("<center><table border=1>"); /*25*/ while(rs.next()) /*26*/ { /*27*/ out.println("<tr><th>codigo</th><td>" + rs.getstring(1) /*28*/ +"</td></tr>" /*29*/ + "<tr><th>nome</th><td>" + rs.getstring(2) /*30*/ + "</td></tr>" /*31*/ + "<tr><th>valor</th><td>" + rs.getstring(3) /*32*/ + "</td></tr>"); /*33*/ } /*34*/ out.println("</table>"); /*35*/ pstm.close();con.close(); /*36*/ } /*37*/ else /*38*/ { /*39*/ out.println("<h3> Faltou informar o código. </h3>"); /*40*/ } /*41*/ %> <! -42--> </body></html>

14 Figura 11-Exemplo de Execução do Arquivo relatoriobdmodificado.jsp 10.3 Inserção de Registro A seguir, é apresentado um arquivo que permite a inserção de registro na base de dados. As linhas /*13, /*14*/ e /*15*/ chamam o método estático executeinsert( ) definido na classe Conectar. <!--- arquivo inserebd.jsp --> <! 01--> <%@ page import="java.sql.*" %> <! 02--> <%@ page import="java.util.*" %> <! 03--> <%@ page import="java.text.*" %> <! 04--> <%@ page import="javanaweb.bd.*" %> <! 05--> <html> <! 06--> <body> <! 07--> <head><title> Resultado da Inserção</title></head> <! 08--> <% /*09*/ String codigo = request.getparameter("codigo"); /*10*/ String nome = request.getparameter("nome"); /*11*/ String valor = request.getparameter("valor"); /*12*/ Conectar.open(); /*13*/ Conectar.executeInsert(Integer.parseInt(codigo) /*14*/, nome /*15*/, Double.parseDouble(valor)); /*16*/ ResultSet rec; /*17*/ rec = Conectar.executeQuery("select * from produto"); /*18*/ out.println("<center><table border=1> /*19*/ <tr><th>codigo</th><th>nome</th><th>valor </th></tr>" /*20*/ ); /*21*/ while(rec.next()) /*22*/ { /*23*/ out.println("<tr><td>" + rec.getstring("codigo")

15 /*24*/ + "</td><td>" + rec.getstring(2) /*25*/ + "</td><td>" + rec.getstring(3) /*26*/ + "</td></tr>"); /*27*/ } /*28*/ out.println("</table>"); /*29*/ Conectar.close(); /*30*/ %> <! 31--> </body></html> Figura 12-Exemplo de Execução do Arquivo inserebd.jsp 10.4 Exercício: Desenvolver os formulários para edição e deleção dos registros da tabela Produto. Obs: Exemplo de Código de Edição: update produto set ( valor = 234 ) where codigo = 1 Exemplo de Código de Exclusão: delete from produto where codigo = 1