Algoritmia e Programação - Dei-Isep

Propaganda
SQL- Structured Query Language
 SQL é uma linguagem de comandos para interagir com
uma BD relacional (não é case-sensitive).
 A linguagem Java permite a utilização de código SQL nos
programas. (Utilizando o package java.sql;)
 Exemplos:
 Criação de uma tabela
CREATE TABLE Products(
Product_Code CHAR(11),
Description CHAR(40),
Unit_Price Decimal(10,2) )
 Inserir registos na tabela
INSERT INTO Products
VALUES (‘345_67’, secador, 29.95)
 Remover tabela
DROP TABLE Products
Consultas à BD (Queries)


Qual o nome e endereço de todos os clientes?
Qual o nome de todos os clientes com encomendas não pagas?
O Comando SELECT
Exemplos:
SELECT * FROM Clientes
SELECT Nome, Cidade FROM Clientes ORDER BY Nome ASC
SELECT Cod_Prod FROM Produtos WHERE preco<100
SELECT Cod_Prod, Preço FROM Produtos
WHERE Cod_Prod LIKE ‘_99%’
SELECT * FROM Clientes
WHERE Cidade<>‘Lisboa’ AND Pais=‘Portugal’
SELECT Clientes.Nome, Clientes.Cidade
FROM Produtos, Clientes, Encomendas
WHERE Produto.Cod_Prod=Item.Cod_Prod AND
Item.Num_Enc= Encomendas.Num_Enc AND
Encomendas.Cod_Cl= Clientes.Cod_Cl
O comando INNER JOIN utiliza-se quando é necessário juntar dados de diversas
tabelas numa única perspectiva (“view”).
SELECT * FROM Items INNER JOIN Produtos ON
Items.CodProd= Produtos.CodProd ORDER BY CodProd DESC
Actualizar e Apagar Informação
 Comando DELETE
DELETE FROM Clientes WHERE Cidade=‘Porto’
 Comando UPDATE
UPDATE Item SET Quantidade=Quantidade+1
WHERE Num_Encomenda=‘132’
Ligação a uma BD Access em Java
import java.sql;
contem classes e interfaces para manipular BD Relacionais
private Connection connection;
um objecto do tipo Connection gere a ligação entre o prog e a BD
O url permite localizar a BD identificando o protocolo: subprotocolo: basedados
odbc indica que o programa usa jdbc para se ligar a uma fonte de dados Microsoft
ODBC (tecnologia que permite gerir o acesso a BD em Windows).
J2SDK vem com um driver JdbcOdbcDriver do package sun.jdbc.odbc que permite o
acesso a fontes de dados ODBC
Para carregar as definições da classe do driver da BD
Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
Para ligar a uma Base de Dados MS - Access
String jsp_path = getServletContext().getRealPath("/");
String pathname=jsp_path.concat("/jdbc/alunos.mdb");
java.sql.Connection cn = DriverManager.getConnection
("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" + pathname);
Outro tipo de ligação à BD
java.sql.Connection cn =DriverManager.getConnection(url, username, password);
Para mais informação sobre JDBC drivers http://java.sun.com/products/jdbc/
list_and_add.jsp
<%@ page import="java.sql.*"%>
<html> <head></head> <body>
<% Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String jsp_path = getServletContext().getRealPath("/");
String pathname=jsp_path.concat("/jdbc/alunos.mdb");
Connection cn = DriverManager.getConnection
("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" + pathname);
Statement stm=cn.createStatement();
ResultSet rs=stm.executeQuery("Select * from alunos"); %>
<h1>Listagem de alunos</h1>
<table border="1"> <tr> <th>Numero</th><th>Nome</th> </tr>
<% while (rs.next()) {
long ID = rs.getLong("ID");
out.println("<TR><TD><a href='view_details.jsp?id=" + ID + "'>");
out.print(rs.getLong("numero")); out.print("</a></TD><TD>");
out.print(rs.getString("nome"));
out.println("</td></TR>"); }
rs.close(); cn.close(); %>
</table> <hr>
<p>Clique <a href="jdbc_form_aluno.html">aqui</a>
para adicionar um novo aluno</p>
view_details.jsp
<%@ page import="java.sql.*"%>
<html> <head></head> <body>
<% String ID = request.getParameter("id");
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String jsp_path = getServletContext().getRealPath("/");
String pathname=jsp_path.concat("/jdbc/alunos.mdb");
Connection cn = DriverManager.getConnection(
"jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" + pathname);
Statement stm=cn.createStatement();
ResultSet rs=stm.executeQuery("SELECT * FROM alunos WHERE id=" + ID);
rs.next(); %>
<h1>Ver Detalhe de um aluno</h1>
<table border="1">
<% out.println("<TR><TH>Número:</TH><TD>");
out.print(rs.getLong("numero")); out.print("</TD></TR>");
out.println("<TR><TH>Número:</TH><TD>");
out.print(rs.getString("nome")); out.print("</TD></TR>");
rs.close(); cn.close(); %> </table>
<p> <a href=“list.jsp">ver todos</a> </p> </body> </html>
form_aluno.html
<html> <head>
<title>Demo CGI</title>
</head>
<body> <h1 align="center">Introduza os dados do aluno</h1>
<form id=main name=main action="add_aluno.jsp"
method="post">
<p><b>Numero:</b> <input maxlength="256" name="numero"
size="20" ></p>
<p><b>Nome:</b> <input maxlength="256" name="nome"
size="20" ></p>
<p><input type="submit" name="submit" value="Inserir"></p>
</form>
<p><a href="list_add.jsp">Cancel</a></p>
</body> </html>
add_aluno.jsp
<%@ page import="java.sql.*"%>
<%
String num = request.getParameter("numero");
String nome = request.getParameter("nome");
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String jsp_path = getServletContext().getRealPath("/");
String pathname=jsp_path.concat("/jdbc/alunos.mdb");
Connection cn = DriverManager.getConnection
("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" + pathname);
Statement stm=cn.createStatement();
stm.executeUpdate("INSERT INTO Alunos (numero, nome)
VALUES (" + num + ", '" + nome + "')");
cn.close();
response.sendRedirect("list_add.jsp"); %>
Download