ODBC significa: Open Data Base Connectivity, e é projetado para simplificar a forma como os aplicativos se comunicam com bancos de dados. Uma conexão ODBC envolve três partes: a aplicação ODBC habilitada (Servidor de Correio de Habilidade), um driver ODBC e um banco de dados real (quase toda a tecnologia de banco de dados é suportado).
Figura 1: Esquema de funcoinamento da conexão ODBC
O que é ODBC?
ODBC é uma API padronizada (Application Programming Interface). É um conjunto de chamadas de função com base no Grupo de Acesso SQL (SAG), conjunto de funções para utilizar um sistema de banco de dados SQL (back-end do sistema). O conjunto SAG implementa a funcionalidade básica do SQL dinâmico. Commads Embedded SQL pode ser traduzido para chamar ODBC.
Com ODBC, a Microsoft estendeu a função SAG básica definida para incluir funções para acessar o catálogo de banco de dados e de controle e determinação das capacidades de drivers ODBC e suas fontes de dados (back-ends). Eles também têm refinado e clarificado a proposta SAG. A Microsoft fornece o Gerenciador de Driver ODBC para seus sistemas operacionais (Windows, Windows 95, Windows NT). O Gerenciador de driver ODBC coordena o acesso aos drivers ODBC e suas fontes de dados associados.
Ao criar sua aplicação web com PHP, geralmente se usa o banco de dados MySQL, por isso todo programador deve conhecer esse código que liga a mesmo ao banco MySQL:
Listagem 1: Exemplo de Conexão PHP MySQL
<?
$host = "localhost"; //computador onde o servidor de banco de dados esta instalado
$user = "usuario"; //seu usuario para acessar o banco
$pass = "senha"; //senha do usuario para acessar o banco
$banco = "banco"; //banco que deseja acessar
$conexao = mysql_connect($host, $user, $pass) or die (mysql_error());
mysql_select_db($banco);
?>
Mas quando sua aplicação precisa se conectar a um servidor que use SQL Server ou Access ou ao um servidor que esteja em rede, poucos sabem fazer tal coisa. Para isso iremos aprender como criar uma conexão PHP ao SQL Server (que também serve para ligar a um banco Access) usando o padrão ODBC.
Observação : Com ODBC você pode se conectar a qualquer banco de dados em qualquer computador da sua rede, desde que uma conexão ODBC esteja disponível.
Mãos à Obra:
Com o SQL Server devidamente instalado siga os passos abaixo para criar o ODBC
- No painel de controle abra o item Ferramentas Administrativas;
- Abra o item Fontes de dados (ODBC);
- Escolha a aba Fonte de dados do Sistema;
- Na aba Fonte de dados do Sitema clique em Adicionar;
- Selecione o SQL Server.Clique em concluir;
- Na próxima tela dê o nome da sua conexão e escolha o servidor;
- Clique Ok.
Agora vamos conectar ao SQL Server:
Listagem 2: Conexão PHP ODBC
<?php
$connect = odbc_connect('nome da fonte de dados criada','usuario','senha');
$sql = "SELECT nome, idade, sexo FROM cliente";
$result = odbc_exec($connect , $sql);
?>
Observação: Se compararmos o código fonte da Listagem 1 com o da Listagem 2, veremos que na conexão PHP/ODBC (Listagem 2) o mesmo se conecta ao servidor e já executa uma variável chamada “$sql” que se comunica com o banco e armazena os registros.
Imprimindo a consulta SQL na sua aplicação
A função odbc_fetch_row() é usada para retornar com os dados de uma pesquisa feita pela conexão. Esta função retorna true se ela conseguir retornar as linhas e falso caso não.
Listagem 3: Exemplo de uso da odbc_fetch_row
odbc_fetch_row($result)
A função odbc_result() é usada para ler os campos de uma pesquisa. Esta função no código abaixo retorna o valor do campo “nome” da tabela clientes usada no exemplo da listagem 2:
Listagem 4: Pegando um campo na pesquisa
$pname = odbc_result($result,`nome`);
A função odbc_close() é usada para fechar uma conexão ODBC.
Listagem 5: Fechando um conexão
odbc_close($connect);
Exemplo usando ODBC
Neste exemplo, usaremos todos os códigos vistos nas listagens deste artigo para mostrar como criar uma conexão com SQL Server, fazer uma pesquisa no banco e então mostrar os dados em uma tabela de uma página em HTML.
Listagem 6: Código fonte com HTML.
<html>
<head>
<title>Teste</title>
<head>
<body>
<?php
$connect = odbc_connect('nome do servidor','usuário','senha');
$sql = "SELECT nome, idade, sexo FROM cliente";
$result = odbc_exec($connect , $sql);
?>
<table width=”600” height=”500”>
<tr>
<td>NOME</td>
<td>IDADE</td>
<td>SEXO</td>
</tr>
<?php
while (odbc_fetch_row($result)) {
?>
<tr>
<td><?php echo "odbc_result($result, "nome")";?></td>
<td><?php echo "odbc_result($result,"idade")";?></td>
<td><?php echo "odbc_result($result,"sexo")";?></td>
</tr>
<?php
}
odbc_close($conn);
?>
</table>
</body>
</html>
Agora vamos conhecer um pouco mais das 33 linhas da listagem 6.
- 01 - 04: Temos um cabeçalho básico HTML.
- 05: Abre-se o corpo da página.
- 06 – 09: Abre-se o PHP para conectarmos ao servidor usando nome do servidor, usuário e senha. Na linha 08 é feita uma pesquisa simples na tabela “clientes” e a mesma e armazenada na variável $sql. Então na linha 10 é fechado o PHP.
- 12 – 31: Neste espaço é criada uma tabela com duas linha e 3 colunas.
- Entre a primeira e a 2º linha (tag “tr”) da tabela é aberto um código PHP (linha 19 à 21) para executar um while que irá ser fechado (“}”) na linha 28 para que o while possa repetir a 2º linha enquanto tiver clientes (registros da tabela) a serem impressos, então nas linhas 24, 25 e 26 imprimimos o resultado da consulta campo por campo.
- 29 e 30: Fechamento da conexão com o servidor e do código PHP.
- 31 – 33: Fechamento das tag’s padrão do HTML.
Dependendo de qual tabela você usar no seu código o resultado irá mudar, no nossos exemplo temos uma tabela no banco com apenas quatro registros, o resultado final ficaria assim:
NOME | IDADE | SEXO |
Carlos Anderson | 22 | Masculino |
Débora Arrais | 31 | Feminina |
Patrícia Alencar | 45 | Feminina |
Gilmar Andrade | 27 | Masculino |
Bem, esperamos ter repassado todas as informações de forma clara, que lhe ajude a crescer profissionalmente e que você tenha aprendido um pouco mais desse mundo que é o PHP. Neste artigo apresentamos apenas uma introdução do muito que existe sobre esse tipo de conexão ODBC, quaisquer dúvidas fiquem à vontade para comentarem, que iremos lhe dar suporte o mais breve possível.