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"); %>