Home > Dicas

Como acessar bancos de dados em páginas ASP

Rotinas em VB para criar páginas Web com conteúdo dinâmico.

Erick Vils

19/07/2005 às 17h05

Foto:

Em algumas situações em que o conteúdo de um site é atualizado constantemente, como acontece nos portais e nas empresas que oferecem a modalidade de comércio eletrônico, a criação de páginas dinâmicas é imperativa. Você já imaginou se todas as páginas de notícias on-line tivessem que ser refeitas uma a uma, no caso de atualização? Ou então, que todas as páginas contendo o preço de um determinado produto tivessem que ser atualizadas manualmente se o valor sofresse alteração? A solução para esse impasse são páginas dinâmicas que, baseadas em um banco de dados, conseguem publicar com muito mais rapidez e funcionalidade as informações atualizadas.

Uma vez tendo as informações em bases de dados, é possível criar mecanismos de procura, índices por horário de publicação, por tema, dentre outros recursos até então disponíveis somente com a replicação das informações.

Para criar tal estrutura, o primeiro passo é compreender como a informação contida em um banco de dados, de preferência relacional, poderá chegar até o navegador do usuário. O acesso às bases de dados através de páginas ASP é feito usando drivers ODBC (Object DataBase Connector). Para os programadores que já tiveram experiência com o desenvolvimento de software-cliente, o conceito é o mesmo, mas para os demais, aí vão algumas características.

O ODBC é uma interface-conector criada para a padronização de conexões a bancos de dados. Por exemplo, o fabricante que desenvolve um banco de dados proprietário e pretende inseri-lo de forma rápida no mercado, pode criar um driver ODBC que fará a tradução dos comandos padronizados da interface ODBC para os de seu gerenciador de banco de dados.

Com isso, o trabalho do programador fica muito mais simples e adaptável. Por ser bastante difundido, pode-se encontrar drivers ODBC para os mais variados tipos de bancos de dados, desde SQL Server e Oracle até Access, DBase, Paradox, etc.

A ponte entre um banco de dados, ou seu gerenciador, e a interface de programação é feita através do Data Source Name (DSN), que será o identificador desse banco dentro da linguagem de programação. Para criá-lo, é necessário ter o banco de dados modelado. No exemplo exibido, foi utilizado um banco de dados MS Access 97 contendo uma tabela com alguns campos em sua estrutura. Essa base de dados pode ser gravada em qualquer máquina da rede ou no próprio servidor Web (recomendado). Para situações mais críticas, opta-se por gerenciadores de bancos de dados como Oracle ou SQL Server e, geralmente, em servidores dedicados dentro da rede local.

A criação do DSN ODBC é fácil. Basta ir ao Painel de Controle do servidor Web no item ODBC e adicionar um novo System DSN (fonte de dados de sistema). Informe um nome único para esse DSN e aponte para o arquivo do banco de dados Access ou preencha corretamente os parâmetros necessários para os gerenciadores SQL Server, Oracle, etc. - Banco de dados noticias. mdb

Tabela Notícias
IDNumérico
DATAData/Hora
TÍTULOTexto
CONTEÚDOMemorando

- Configuração do DSN ODBC

Painel de Controle
ODBC=> System DSN
Driver
Microsoft Access Driver (*.mdb)
Data Source Name (DSN)
"NOTÍCIAS" Utilize o botão
Selecionar para apontar para
o arquivo notícias.mdb

Nesse exemplo, serão criadas duas páginas dinâmicas. A primeira gera dinamicamente uma lista das últimas notícias do banco de dados ordenadas por data, de maneira decrescente. Assim, as notícias mais atuais serão listadas primeiro. Cada uma dessas notícias será exibida somente com seu título e um link para a informação completa (campo CONTEÚDO do banco de dados) na segunda página.

A página do índice não necessita receber parâmetros para que seja lida corretamente, porém a segunda página, que será responsável por exibir o conteúdo completo da notícia, receberá o ID correspondente através da URL, ou seja, o valor do ID deverá ser lido dentro do script através do método Request.QueryString("ID").

Para a abertura do banco de dados em ambas as páginas, não é necessário saber sua localização nem mesmo o seu formato, pois esse trabalho já é realizado pela configuração anteriormente feita durante a criação do DSN. A partir daquele momento, o banco de dados é identificado apenas pelo seu DSN, passando, se necessário, o nome do usuário e a respectiva senha.

Na prática, muitos desenvolvedores não têm acesso ao Painel de Controle do servidor Web, pois os sites estão hospedados em provedores. Para solucionar esse problema, é possível criar a conexão ODBC dinamicamente a partir da página ASP. Faça o upload do banco de dados para algum diretório do servidor Web e obtenha sua localização física (D:' Diretorio'noticias.mdb, por exemplo). Com essa informação, basta: Substituir a linha de comando

DB.Open "Notícias"

por

DB.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ= D:'DIR'NOTICIAS. MDB;UID=;PWD="

Se a localização física do arquivo também não for conhecida, a solução será recorrer à função Server. MapPath() que consulta a tabela de diretórios do servidor Web e retorna a localização física de uma determinada URL. Modifique, então, a string de conexão para algo similar a:

"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("/") & "'noticias.mdb" & ";pwd="

Página CONTEUDO.ASP
<%@ LANGUAGE=VBScript%>
<html>
<%
Set DB = Server.CreateObject("ADODB.Connection")
DB.Open "Notícias"
If Request.QueryString("ID") <> "" then
   SQL="select DATA,TÍTULO,CONTEÚDO FROM NOTÍCIAS "
   SQL=SQL & " where ID=" & Request.QueryString("ID")
   Set RecSet=DB.Execute (SQL)
   If RecSet.Eof Then 'notícia não encontrada
       Response.Write "O código <b>" & Request.QueryString("ID") & "</b> não existe!"
   Else
       Response.Write "<title>Notícia - " & RecSet("TITULO") & "</title>" & vbCrLf
       Response.Write "<b>" & RecSet("TÍTULO") & "</b><BR><BR>"
       Response.Write RecSet("CONTEÚDO")
   End If
Else
   Response.Write "Nenhum código de notícia informado!"
End If
%>
<hr>
<a href="indice.asp">Retornar ao índice de notícias</a><br>
</html>
Página INDICE.ASP
<%@ LANGUAGE=VBScript%>
<html>
<title>Índice de Notícias</title>
<%
Set DB = Server.CreateObject("ADODB.Connection")
DB.Open "Notícias", "admin", ""
SQL="SELECT ID,DATA,TÍTULO,CONTEÚDO FROM NOTÍCIAS order by DATA DESC"
Set RecSet=DB.Execute (SQL)
If RecSet.Eof Then 'Tabela vazia
   Response.Write "Não há notícias cadastradas!"
Else
   Response.Write "Clique na notícia desejada:<br><br>"
   Do Until RecSet.Eof
       Response.Write RecSet("DATA")
       Response.Write " - <a href=conteudo.asp?ID=" & RecSet("ID") & ">"
       Response.Write RecSet("TITULO") & "</A><BR>"
       RecSet.MoveNext
   Loop
End If
%>
</html>

Dica: Para tornar a exibição do conteúdo da notícia mais requintada, utilize instruções HTML ao inserir o valor do campo CONTEÚDO no banco de dados, pois dessa forma os comandos serão enviados através da página conteudo. asp para o navegador do cliente e formatados conforme suas instruções, dando um acabamento mais profissional à página. Não se esqueça que as quebras de linha no navegador dependem da instrução HTML <br>.

Tags

Junte-se a nós e receba nossas melhores histórias de tecnologia. Newsletter por e-mail Newsletter por e-mail