Como acessar bancos de dados em páginas ASP

Postado por Plinio Cruz em 5 de maio de 2005 na categoria ASP, Banco de Dados, Programação | Seja o primeiro a comentar

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 
ID – Numérico 
DATA – Data/Hora 
TÍTULO – Texto 
CONTEÚDO – Memorando 

- 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>.

Fonte: Erick Vils, PC World

Switch to our mobile site