SQL Structured Query Language SQL uma linguagem de








- Slides: 8

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. Cod. Prod= Produtos. Cod. Prod ORDER BY Cod. Prod DESC

Actualizar e Apagar Informação § Comando DELETE FROM Clientes WHERE Cidade=‘Porto’ § Comando 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). J 2 SDK vem com um driver Jdbc. Odbc. Driver 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. for. Name(“sun. jdbc. odbc. Jdbc. Odbc. Driver”); Para ligar a uma Base de Dados MS - Access String jsp_path = get. Servlet. Context(). get. Real. Path("/"); String pathname=jsp_path. concat("/jdbc/alunos. mdb"); java. sql. Connection cn = Driver. Manager. get. Connection ("jdbc: odbc: Driver={Microsoft Access Driver (*. mdb)}; DBQ=" + pathname); Outro tipo de ligação à BD java. sql. Connection cn =Driver. Manager. get. Connection(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. for. Name("sun. jdbc. odbc. Jdbc. Odbc. Driver"); String jsp_path = get. Servlet. Context(). get. Real. Path("/"); String pathname=jsp_path. concat("/jdbc/alunos. mdb"); Connection cn = Driver. Manager. get. Connection ("jdbc: odbc: Driver={Microsoft Access Driver (*. mdb)}; DBQ=" + pathname); Statement stm=cn. create. Statement(); Result. Set rs=stm. execute. Query("Select * from alunos"); %> <h 1>Listagem de alunos</h 1> <table border="1"> <tr> <th>Numero</th><th>Nome</th> </tr> <% while (rs. next()) { long ID = rs. get. Long("ID"); out. println("<TR><TD><a href='view_details. jsp? id=" + ID + "'>"); out. print(rs. get. Long("numero")); out. print("</a></TD><TD>"); out. print(rs. get. String("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. get. Parameter("id"); Class. for. Name("sun. jdbc. odbc. Jdbc. Odbc. Driver"); String jsp_path = get. Servlet. Context(). get. Real. Path("/"); String pathname=jsp_path. concat("/jdbc/alunos. mdb"); Connection cn = Driver. Manager. get. Connection( "jdbc: odbc: Driver={Microsoft Access Driver (*. mdb)}; DBQ=" + pathname); Statement stm=cn. create. Statement(); Result. Set rs=stm. execute. Query("SELECT * FROM alunos WHERE id=" + ID); rs. next(); %> <h 1>Ver Detalhe de um aluno</h 1> <table border="1"> <% out. println("<TR><TH>Número: </TH><TD>"); out. print(rs. get. Long("numero")); out. print("</TD></TR>"); out. println("<TR><TH>Número: </TH><TD>"); out. print(rs. get. String("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> <h 1 align="center">Introduza os dados do aluno</h 1> <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. get. Parameter("numero"); String nome = request. get. Parameter("nome"); Class. for. Name("sun. jdbc. odbc. Jdbc. Odbc. Driver"); String jsp_path = get. Servlet. Context(). get. Real. Path("/"); String pathname=jsp_path. concat("/jdbc/alunos. mdb"); Connection cn = Driver. Manager. get. Connection ("jdbc: odbc: Driver={Microsoft Access Driver (*. mdb)}; DBQ=" + pathname); Statement stm=cn. create. Statement(); stm. execute. Update("INSERT INTO Alunos (numero, nome) VALUES (" + num + ", '" + nome + "')"); cn. close(); response. send. Redirect("list_add. jsp"); %>