acesso a bds

Propaganda
BANCO DE DADOS
Universidade do Estado de Santa Catarina
Centro de Ciências Tecnológicas
Departamento de Ciência da Computação
Prof. Alexandre Veloso de Matos
[email protected]
INTRODUÇÃO
Um Banco de Dados pode ser considerado:
A soma de todos os dados que uma organização possui.
Uma coleção de dados, organizada logicamente e gerenciada sob um conjunto
unificado de princípios, procedimentos e funcionalidades, que ajuda a garantir a
aplicação consistente e a interpretação dos dados em toda a organização
No entanto, o que pode ser considerado um produto (resultado) da
criação de BDs?
APLICAÇÕES DE BD
BDs não têm uma finalidade/funcionalidade se aplicações não forem
desenvolvidas para extrair informação dos dados
É importante, portanto, permitir extrair-se de um BD (que já passou por
algumas etapas de preparação) informações
Todos precisariam ter conhecimento de uma linguagem de consulta?
APLICAÇÕES DE BD
O desenvolvimento de uma aplicação de BD é apenas uma forma de
capturar, via alguma linguagem de programação, informação que pode
ser:
Manipulada
Processada
Exibida
APLICAÇÕES DE BD
Como BDs são mantidos por SGBDs, é necessário que exista uma
estratégia que possibilite a comunicação com o SGBD, apesar do
formato utilizado para armazenamento dos dados
Em geral, são providos drivers de acesso
ACESSO A BDS [JAVA]
ACESSO A BDS - JAVA
Java, por exemplo, possui uma Application Programming Interface (API)
que possibilita o acesso a BDs
É um modelo de conexão uniforme
Essa API é denominada Java DataBase Connectivity (JDBC)
ACESSO A BDS - JDBC
De maneira simplificada, JDBC tem 6 funcionalidades:
a)
b)
c)
d)
e)
f)
Estabelecer conexão com o banco de dados
Executar consultas
Receber o conjunto de Resultados das Consultas
Executar stored procedures
Obter informações sobre o banco de dados, tabelas, visões e stored procedures
Executar transações
ACESSO A BDS - JDBC
A aplicação chama a API JDBC
Aplicação
A API JDBC carrega o driver que “entende” o SGBD
JDBC
Driver
A aplicação pode se conectar e enviar/receber requisições
ao/do SGBD
BD
ACESSO A BDS - JDBC
O que é a JDBC?
Consiste em uma biblioteca de recursos implementada em Java
Ou seja, disponibiliza classes e interfaces para o acesso ao banco de dados
Para cada banco de dados existe uma implementação (drivers)
ACESSO A BDS - JDBC
Tipos de Drivers
Ponte JDBC–ODBC
Acesso Nativo
Acesso por Middleware
ACESSO A BDS - JDBC
5 passos básicos:
a)
b)
c)
d)
e)
Registrar o driver na aplicação
Conectar no SGBD
Executar comandos SQL
Processar o resultado recebido
Fechar a conexão
Principais recursos do pacote java.sql:
DriverManager: responsável por criar uma conexão com o banco de dados
Connection: classe responsável por manter uma conexão aberta com o banco
de dados
Statement: gerencia e executa instruções SQL
ResultSet: responsável por receber e apresentar os dados obtidos do banco de
dados
PASSO 1 - REGISTRO DO DRIVER
Sugere-se que o driver seja registrado automaticamente quando a
classe (que representa a aplicação) for carregada
O driver é, portanto, carregado, em tempo de execução
Class.forName("com.mysql.jdbc.Driver");
PASSO 2 – CONEXÃO AO BD
Após o registro do driver, é necessário fornecer informações ao
DriverManager para realizar a conexão com o Banco de Dados
desejado
Connection con = DriverManager.getConnection(url,
login, senha)
jdbc:mysql://localhost:3306/Clinica
SOBRE A CONEXÃO
A conexão mantém informações importantes sobre o acesso
O objeto associado à conexão representa a conexão com o banco de
dados
Possui métodos que permite gerenciar essa conexão:
commit() - executa todas as alterações feitas com o banco de dados pela atual
transação.
rollback() - desfaz qualquer alteração feita com o banco de dados pela atual
transação.
close() - libera o recurso que estava sendo utilizado pelo objeto.
PASSO 3 - EXECUTAR COMANDOS SQL
Para a execução de consultas ao BD é necessário criar um Statement e
obter o resultado através de um
ResultSet
Statement stmt =con.createStatement();
ResultSet rs = stmt.executeQuery (“select * from
medicos”);
Na maioria dos casos, o resultado é armazenado em um ResultSet e
pode ser percorrido com métodos definidos nesta classe.
SOBRE A EXECUÇÃO DE INSTRUÇÕES SQL
Os métodos de Statement é que permitem a execução de instruções SQL:
executeUpdate() – executa instruções SQL do tipo: INSERT, UPDATE e DELETE
executeQuery() – executa instruções SQL de busca de dados, do tipo: SELECT
close() - libera o recurso que estava sendo utilizado pelo objeto
SOBRE O PROCESSAMENTO DO RESULTADO
Os métodos de ResultSet permitem manipular o resultado da operação
SQL:
next() - move o cursor para a próxima linha de dados, já que o conjunto de
dados retornados pela consulta SQL é armazenado como em uma tabela
close() - libera o recurso que estava sendo utilizado pelo objeto
getString(String columnName) - recupera o valor da coluna informada como
parâmetro, da linha atual do conjunto de dados recebidos pelo objeto ResultSet
EXEMPLO
Paciente ( #cdPaciente, nmPaciente, deEndPaciente, deTelPaciente, dtNasc,
&cdPlanoSaude)
public void connectToAndQueryDatabase(String username,
String password) throws Exception{
Class.forName ("org.gjt.mm.mysql.Driver");
Connection con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/Clinica", username, password);
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT nmPaciente,
deEndPaciente, deTelPaciente FROM Paciente");
while (rs.next()) {
String nome = rs.getInt(" nmPaciente ");
String ender = rs.getString(" deEndPaciente ");
String fone = rs.getString(" deTelPaciente ");
}
}
ACESSO A BDS [PHP]
ACESSO A BDS - PHP
PHP possui suporte a distintos BDs relacionais (Adabas, Firebird, Oracle,
FrontBase, PostgreSQL, MSSQL, mSQL, IBM DB2, MySQL, ...)
Algumas ferramentas WAMP possuem suporte nativo a alguns
(principalmente código aberto), no entanto:
Algumas configurações adicionais podem ser necessárias em php.ini
ACESSO A BDS - PHP
Assim como na manipulação de qualquer BD, existem algumas atividades
cotidianas:
Conexão ao BD
Seleção do BD
Manipulação de dados (tabelas)
Finalização da conexão
ACESSO A BDS - PHP
<?php
$myhost="127.0.0.1";
$myporta="3306";
$myuser="root";
$mysenha="";
$mybanco=“musica";
$myhosteporta=$myhost . ":" . $myporta;
$con=mysql_connect($myhosteporta,$myuser,$mysenha) or die("Não foi possível a conexao,
erro: ".mysql_error());
mysql_select_db($mybanco,$con) or die("Não conseguiu selecionar o banco, erro:
".mysql_error());
echo "===>conectado ao BD ".$mybanco." <br>";
?>
ACESSO A BDS - PHP
Para executar os exemplos, consideraremos a criação da seguinte
tabela:
use musica;
DROP TABLE IF EXISTS usuarios;
CREATE TABLE usuarios (
idusuario int(10) unsigned NOT NULL auto_increment,
login varchar(20) NOT NULL,
senha varchar(32) NOT NULL,
PRIMARY KEY (idusuario));
ACESSO A BDS - PHP
E também a inserção dos seguintes usuários:
insert into usuarios (login, senha) values
("andre", md5("senha")),
("maria", md5("senha")),
("alex", md5("senha"));
RECUPERAÇÃO DE DADOS
As variáveis de um formulário html são enviadas via algum método de
transferência de dados (POST ou GET)
Conforme o método usado, as variáveis ficam disponíveis em vetores
globais ($_POST ou $_GET)
Para facilitar, a conexão ao BD pode ser incorporado ao código do
script através de:
require “conexao.php”
RECUPERAÇÃO DE DADOS
<?php
import_request_variables("gP");
require "conexao.php";
$sql = "SELECT idusuarios FROM usuarios where login = '$login' and senha = '" .
md5($senha) . "'";
$resultado = mysql_query("$sql",$con);
$existe = mysql_num_rows($resultado);
if ($existe) {
echo "Ok, pode acessar o sistema!";
}
else {
echo "Amigo, os dados digitados não conferem! <BR><BR>
<INPUT TYPE=\"button\" VALUE=\"Tentar Novamente\" onClick=\"history.go(-1)\">";
}
?>
RECUPERAÇÃO DE DADOS
RECUPERAÇÃO DE DADOS
RECUPERAÇÃO DE DADOS
Aplicações possuem a necessidade de investigar inúmeras linhas –
tratamento dos dados recuperados.
Instruções associadas:
mysql_fetch_assoc($resultado); // índice do array é o nome campo
mysql_fetch_row($resultado); // índice numérico
mysql_fetch_array($resultado); // array com índice número e campo
RECUPERAÇÃO DE DADOS
<?php
require "conexao.php";
$sql = "SELECT * FROM usuarios";
$resultado = mysql_query("$sql",$con);
echo "<b>Usuários do BD ".$mybanco."</b><br>";
while ($linha = mysql_fetch_assoc($resultado)) {
$id = $linha["idusuarios"];
$login = $linha["login"];
echo "<b>$id:</b> $login <br>";
}
mysql_close($con);
?>
RECUPERAÇÃO DE VÁRIOS DADOS
<?php
require "conexao.php";
$sql = "SELECT * FROM usuarios";
$resultado = mysql_query("$sql",$con);
echo "<b>Usuários do BD ".$mybanco."</b><br>";
while ($linha = mysql_fetch_assoc($resultado)) {
$id = $linha["idusuarios"];
$login = $linha["login"];
echo "<b>$id:</b> $login <br>";
}
mysql_close($con);
?>
INSERÇÃO DE DADOS
<?php
import_request_variables("gP");
require "conexao.php";
$user = $_POST["login"];
$senha = $_POST["senha"];
$sql = "INSERT INTO usuarios (login,senha) values ('$user', md5('$senha'));";
$resultado = mysql_query("$sql",$con) or die("Falha na
execução da consulta");
header('Location: http://localhost/html/Internet_Music');
?>
Download