ASP e ADO - Colocando seu banco de dados na WEB


  1. Asp ????
  2. Acesso a base de dados - Exibindo os dados na WEB !
  3. Os Objetos ASP - Resumo.
  4. Atualizando dados: Inclusão, exclusão e atualização de dados.

O que é ASP ? 
Se você já pensou em trabalhar com banco de dados na Web e não sabe como. Se você pensa em criar uma aplicação com acesso a banco de dados na Web e não sabe por onde começar . Você encontrou a resposta para os seus problemas . Ela se chama ASP (Active Server Pages).
Supondo que você já tenha conhecimentos básicos de Visual Basic e HTML, ao usar ASP você vai poder facilmente criar conexões com banco de dados e fazer todo o tratamento que isto implica de uma maneira quase intuitiva pois a ASP usa a ADO (ActiveX Data Objects) para acessar base de dados e VBScript como linguagem de scripts.

As páginas ASP são um ambiente para programação de páginas dinâmicas e interativas que usam os seguintes recursos.

1. HTML ( Hypertext Markup Language ou Linguagem de marcadores de hipertexto) , a linguagem com a qual escrevemos as páginas localizadas no servidores e que são visualizadas pelos usuários
2. Linguagem de scripts como Vbscript ou JavaScript que atuam no servidor
3. Acesso a base de dados que suportam a OBDC. ( Open Data Base Connectivity ) , suporte a ADO ( Active Data Objects )

Você identifica um arquivo que contém código ASP pela extensão .asp, ele contém basicamente código HTML e scripts que irão rodar no servidor.(Se você já acessou o site da Microsoft observe a quantidade de arquivos de scripts com a extensão .asp usados.)

O Vbscript é o mais utilizado como linguagem de scripts em arquivos asp, mas podemos usar JavaScript dentre outras.

As páginas ASP contém basicamente código HTML , VBscript/JavaScript e texto.

Ao utilizar ASP temos as seguintes vantagens:

1. Independência do Browser - Os scripts rodam no servidor e somente os resultados são enviados ao usuário , qualquer navegador pode visualizar as páginas ASP

2. Acesso a Base de Dados - ASP provê um fácil mecanismo para visualizar , atualizar e adicionar informações a base de dados que suportam OBDC e servidores SQL

3. Segurança do código fonte - O cliente visualiza somente o resultado do processamento no formato HTML

4. Administração do estado - Através de objetos internos da ASP podemos controlar o estado do aplicativo com base no usuário, no aplicativo e no servidor.

5. Se você conhecer o Visual Basic ou VBA , todo o seu conhecimento é imediatamente aproveitado pois em ASP podemos usar o Vbscript e ADO .

6. Fácil acesso a base de dados via ADO

O que é necessário para trabalhar com ASP ?

Para utilizar e trabalhar com páginas ASP devemos ter:

1. Um servidor com Windows NT, Windows NT Workstation , Windows 95 ou Windows 98.
2. O Microsoft Internet Information (IIS), o Peer Web Services (PWS) ou o Personal Web Server (PWS) instalado neste servidor
3. Um driver de ODBC instalado e funcionando neste servidor ( para acessar base de dados).
4. Um diretório para guardar as páginas ASP no servidor com direito de execução.
5. Um navegador ( Browser ) .

O windows 98 já vem com o Personal Web Server e você pode usá-lo como seu servidor da web. Voce deve então criar seu diretório virtual e , usando um editor criar seus arquivos ASP e salvá-los neste diretório.

Um arquivo ASP contém basicamente código HTML , texto e uma linguagem de scripts ( JavaScript , VBScript, etc..).

Como a ASP Funciona ?

O código ASP é colocado entre as tags <% %> .Ela é utilizada para delimitar os comandos de script.

O servidor interpreta qualquer coisa delimitada pela tag <% %>, faz o processamento do
código e envia somente o resultado para o cliente. Então todo o código ASP e vbscript a ser processado estará sempre as tags <% e %> .
Assim <% For x=1 to 5 %> é a declaração para o loop For/Next usado em VBscript. Os delimitadores <% e %> indicam que a linha é um script e não código HTML.

Para exibir e atribuir o conteúdo de uma variável a sintaxe é <%=variavel%>.
Assim : <% imagem="carro.gif" % > - atribui a imagem carro.gif à variável imagem
<img src=<% imagem %> - mostra o contéudo da variável imagem.
No código abaixo temos HTML e script :

<BODY>
<Font size="4">
A data de hoje e : <%=Now%>
</P>
</BODY>

As tags <BODY> , <FONT> e <P> são retornadas ao Navegador juntamente com o texto
"A data de hoje e: " . O texto <% = now %> não é enviada ao navegador pois está entre as
tags <% e %>.
O sinal de igual (=) determina que o resultado do processamento seja retornado ao navegador.
Usamos a função Now do Vbscript para retornar a data e hora atual ao Navegador do usuário.

Mas vamos ao que interessa, acessar uma base de dados e mostrar seu conteúdo na WEB.

Acessando sua base de dados e exibindo os dados na WEB

Antes de realizar qualquer operação com um banco de dados devemos acessá-lo tornando-o
disponível para as operações que desejamos executar. Em nosso caso temos duas maneiras
de acessar uma base de dados:

1 - Criando um Data Source Name : (Veja o artigo Criando um Data Source Name - DSN)
e usando o objeto Connection da ADO para criar uma conexão com a base de dados referenciada ao DSN. Supondo um DSN com o nome de teste teremos:

<%
'
declarando as variáveis
Dim DbConn
Dim nome_dsn = "teste"
'Criando uma instância do objeto connection o servidor
Set DbConn = Server.CreateObject("ADODB.Connection")
'definindo o tempo de espera para desconexão
DbConn.ConnectionTimeout = 15
'estabelecendo a conexão com o DSN criado
Dbconn.Open nome_dsn
...
%>


2- Podemos acessar uma base de dados sem criar um DSN . Podemos fazer isto para o
acesso a uma base de dados Access . Vejamos o código para abrir a base de dados Biblio.mdb :

<%
'
declarando as variáveis
Dim DbConn
Dim nome_dsn
'
Criando uma instância do objeto connection no servidor
Set DbConn = Server.CreateObject("ADODB.Connection")
'
definindo o tempo de espera para desconexão
DbConn.ConnectionTimeout = 15
'estabelecendo a conexão sem usar um DSN - geralmente usadas para base access
Dbconn.Open "DBQ=C:\asp_db\biblio.mdb;DRIVER={Microsoft Access Driver (*.mdb)}"
'DBQ - informa o caminho para localização da base de dados
'
DRIVER - Informa ao objeto connection que tipo de base de dados estamos usando
...
%>


1- Exibindo o conteúdo de suas tabelas na Internet
Vejamos agora como exibir o conteúdo das tabelas de uma base de dados. Vamos exibir o
conteúdo da tabela Authors. O código do arquivo mostra_tabela.asp vem a seguir

A tabela Authors tem a seguinte estrutura:

<html><head>
<TITLE>mostra_tabela.asp</TITLE>
</head>
<body bgcolor="aqua">
<% 
' define o DSN , a identificação do usuário e a senha
 aspDSN="DSN=asp_db;uid=teste;pwd=teste"
 set conntemp=server.createobject("adodb.connection")
 conntemp.open aspDSN

'Para acesso sem um DSN fariamos
'set conntemp=server.createobject("adodb.connection")
'conntemp.open "DBQ=C:\asp_db\biblio.mdb;DRIVER={Microsoft Access Driver (*.mdb)}"

'Vamos selecionar somente os primeiros registros da tabela pois a tabela contem muitos registros
'Para isto criaremos uma instrução SQL que selecione somente os autores com Au_id menor que 12
 aspSQL="select * from authors' where Au_id < 12"
 set rstemp=conntemp.execute(aspSQL)

' verifica se há dados no recordset
 If rstemp.eof then
   response.write "Não há dados a exibir<br>"
   response.write aspSQL & "<br>Não retorna informação alguma..."
   connection.close
   set connection=nothing
   response.end
 end if
%>
'Vamos usar código HTML para criar uma tabela e exibir nossos dados
<table border=1>
<%
' Vamos dar nome aos cabeçalhos dos campos
 response.write "<tr>"
 'Percorremos 
  for each item in rstemp.fields
     response.write "<td><B>" & item.name & "</B></TD>"
  next
  response.write "</tr>"

' Agora iremos exibir os dados do Recordset gerado pela consulta SQL
'Vamos percorrer o recordset até chegar no final do arquivo
DO UNTIL rstemp.eof
'atribuindo os valores dos campos as variáveis
  Codigo=rstemp("Au_ID")
  Nome=rstemp("Author")
  Nascimento=rstemp("Year born")

' escrevendo os campos em uma tabela para exibição via um Browser
  'cellstart="<td align=""top"">"
   response.write "<tr>"
   response.write "<td>" & Codigo & "</td>"
   response.write "<td>" & Nome & "</td>"
   response.write "<td">" & Nascimento & "</td>" 
   response.write "</tr>"
  'move-se para próximo registro do recordset
  rstemp.movenext

LOOP
%>
</table>

<%
' Fechamos o recordset e liberamos a memória usada
rstemp.close
set rstemp=nothing
conntemp.close
set conntemp=nothing
%>
</body></html>

Eis o resultado do processamento ASP. Lembre-se o usuário recebe o código HTML processado e não tem acesso ao seu código fonte. Dúvida ??? Então mande o Explorer exibir o código fonte....

No código acima notamos a utilziação do objeto Response que envia informação do servidor para o cliente e do objeto Request que recebe informação do cliente para o servidor.

Os objetos ASP

ASP permite que você crie suas aplicações através de cinco objetos básicos, abaixo temos um resumo dos objetos ASP:

1-) Objeto Application

O objeto Application pode ser usado para compartilhar informações entre todos os usuários de
uma determinado aplicativo. O aplicativo é definido como todos os arquivos .asp dentro do
diretório virtual e seus subdiretórios.

Sintaxe: Application.method

O objeto Application tem dois métodos, chamados Lock e Unlock. Como os dados são compartilhados
entre os usuários, esses métodos permitem que você bloqueie e desbloqueie efetivamente o acesso
ao objeto aplicativo, enquanto aplica alterações em suas variáveis.

Lock não permite que outros clientes modifiquem as propriedades do objeto Application.
Unlock permite que outros usuários modifiquem as propriedades do objeto Application.

Ele também permite que sejam criadas variáveis que estarão disponíveis para todos os usuários ao acessarem sua aplicação.Exemplo:

Application.Lock
Application("nome")= "Jose"
Application.Unlock
Lock bloqueia a aplicação e Unlock desbloqueia a aplicação durante uma atualização.

2-) Objeto Session

O objeto Session é semelhante ao objeto Application no sentido de que ele também contém eventos
dentro do arquivo global.asa. Entretanto, ao contrário do objeto Application , o objeto Session
armazena informacões de uma sessão de usuário em particular. Esse objeto persiste para a sessão
inteira e proporciona assim uma solução elegante para o problema comum da persistência do estado
- quando você precisa controlar um usuário de uma página da Web para a seguinte.

O servidor Web cria automaticamente um objeto Session quando uma página é requisitada pelo usuário
que ainda não tenha uma sessão. A sessão é destruida quando for abandonada ou quando expirar.

Sintaxe: Session|propriedade|metodo

A sintaxe para se definir uma variável dentro do objeto Session é a seguinte:

Session("nome_variavel") = variavel

Você pode então fazer referência ao valor da variável como segue:

MinhaVariavel = Session("nome_variavel")

Define também as variáveis para usuários individuais. É muito usado para armazenar valores informados em formulários, como o pedido de compras, informações cadastrais, etc..Exemplo:

<FORM>
<P><INPUT VALUE=<%=Session("Nome")%>>Nome:</P>
<P><INPUT VALUE=<%=Session("Endereço")%>Endereço:</P>
</FORM>
Cria um formulário e solicita ao usuário que informe o seu
Nome e endereço. Os dados serão armazenados nas variavéis
Nome e Endereço

3-Objeto Request

Retorna os valores das requisições feitas pelo Navegador do cliente ao servidor durante
uma requisição HTTP.

Sintaxe : Request[.Collection](variável)

Cada requisição pode ter diversos parâmetros em diferentes categorias, e para tratar esta
quantidade de informação o objeto request utiliza as Coleções (Collections) , que podem
ser vistas como vetores contendo um conjunto de informações.

Para acessar as informações de uma coleção podemos usar um loop ( For Each... Next ).

Um exemplo de utilização de request usando a coleção Form é dada a seguir.

A coleção Form é utilizada com os formulários HTML, os quais são uma coleção de campos textos,
botões , caixas de seleção e outros controles que são usados para que o usuário possa preencher
e assim fornecer informações.

Sintaxe: Request.Form(parametro)[index][.count]

O parâmetro especifica o nome do elemento do formulário do qual é retornado o valor.
Quando um usuário submete uma informação em um formulário ela é controlada pela opção
action da tag Form (<form action="Teste1.asp" method="POST"> ) . A opção action é definida
para uma URL que aponta para um programa ou para um arquivo de script que processará as
informações .

Como a informação é enviada dependerá do método usado na tag form. Podemos usar o método GET
onde os nomes e valores dos campos são enviados como parâmetros e assim podem ser recuperados
pela coleção QueryString, ou usamos o método POST e ai a informação é embutida no objeto Request e esta disponível via coleção Form.

Como exemplo podemos citar o preenchimento de um formulário onde o usuário fornece tres valores
: Windows 98 , Linux e DOS para o parâmetro Sistemas. Para retornar estes valores podemos usar
o script:
<%
For Each item In Request.Form("Sistemas")
Response.Write item & "<BR> "
Next
%>


A saída seria:

Windows98
Linux
DOS

O mesmo efeito seria obtido com o script:

<%
For I = 1 To Request.Form("Sistemas").Count
Response.Write Request.Form("Sistemas")(I) & " < BR > "
Next
% >

4 - Objeto Response

O objeto response é usado para enviar imformacões a um cliente e possuem apenas uma coleção ,
a coleção Cookies .

Sintaxe: Reponse.Coleção|propriedade|Metodo

A coleção Cookies do objeto Response determina o valor de um cookie. Se o cookie especificado não existir ele é criado, se existir o novo valor é atribuido ao cookie.

Sintaxe: Response.Cookies(cookie)[(chave)(.atributo] = valor

Cookie é o nome do cookie.
Chave é opcional, se especificado cookie é um dicionário.

Vejamos um exemplo com o objeto Response usando o método Write , o qual permite escrever textos na página gerada. Ex: Response.Write(" Olá ") escreve o texto - "Olá " na página gerada. Uma maneira simplificada de obter o mesmo resultado é escrever: ="Olá"

Sintaxe: Response.Write variant

Variant representa os dados que serão escritos. Pode ser qualquer tipo de dado suportado pelo
tipo de dado VARIANT do VBscript. Não pode conter o os caracteres "%>".
Exemplo:

1-) O script abaixo envia uma mensagem ao cliente:

<p> Ola , como vai ? seu nome e : <% Response.Write Request.Form("name") %>

5- O objeto Server

O objeto Server fornece métodos e propriedades que permitem interagir com a máquina em que seu
aplicativo está sendo executado - a saber, o servidor da Web.

Sintaxe: Server.method

O objeto Server tem uma propriedade ScriptTimeout e os quatro métodos a seguir: CreateObject,
HTMLEncode, MapPath e URLEncode.


A propriedade ScripTimeout do objeto Server especifica quantidade máxima de tempo que um script
pode rodar até terminar.

Sintaxe: Server.ScriptTimeout = numsegundos

Numsegundos determina o número máximo em segundos que o script pode rodar até terminar. O valor
padrão é de 90 segundos.

Exemplo:
1-) No código abaixo o script termina se o servidor levar mais que 30 segundos para processar
o script.
< % Server.ScriptTimeout = 30 %>

Atualizando dados: Inclusão, exclusão e atualização de dados.

Vamos abordar agora como atualizar, incluir e excluir registros de uma base de dados na WEB usando ASP e ADO.

1- Incluindo registros em um Recordset - Para incluir um novo registro para um recordset usando ADO, você pode usar os métodos AddNew e Update do objeto Recordset. É claro que primeiro você tem que criar um Recordset que permita atualizações (não pode ser um Recorset do tipo somente leitura - read-only). Com o Recordset criado o código necessário é o seguinte: ( rst - será o nome do nosso recordset criado )

rst.Addnew
rst("campo1") = valor1
rst("campo2") = valor2
....
rst.Update

Como podemos ver inclusão de um novo registro sempre envolve três etapas:

  1. Invocar o método AddNew informando a ADO que você quer inserir um registro
  2. Atribuir os valores aos campos desejados
  3. Invocar o método Update para salvar o novo registro no banco de dados.

Num exemplo prático iremos mostrar como incluir registros usando uma base de dados access. Usaremos um arquivo chamado agenda.mdb e iremos incluir dados na tabela clientes cuja estrutura é a seguinte:

Usaremos dois arquivos : Um arquivo HTML (incluir.htm) para receber os valores a serem incluidos e um arquivo ASP(incluir2.asp) para incluir efetivamente as informações na tabela clientes.

O código do arquivo incluir.htm é dado a seguir:

<HTML>
<HEAD>
<TITLE>Incluir.html- Examplo</TITLE>
</HEAD>
<BODY>
<H1>Incluindo um novo Cliente </H1>

<FORM METHOD="POST" ACTION="incluir.ASP">
<TABLE>
  <TR><TD>Nome:</TD>
      <TD><INPUT NAME="Nome" SIZE=20></TD></TR>
  <TR><TD>Endereço:</TD>
      <TD><INPUT NAME="Endereco" SIZE=40></TD></TR>
  <TR><TD>Cidade:</TD>
      <TD><INPUT NAME="Cidade" SIZE=20></TD></TR>
  <TR><TD>Estado:</TD>
      <TD><INPUT NAME="Estado" SIZE=6></TD></TR>
  <TR><TD>Cep:</TD>
      <TD><INPUT NAME="Cep" SIZE=10></TD></TR>
</TABLE>
<BR><INPUT TYPE="SUBMIT" VALUE="Salvar Registro">
<INPUT TYPE="RESET" VALUE="Limpar Campos">
<BR><BR><A HREF="menu.html">Abandonar edição e retornar a pagina principal</A>
</FORM>
</BODY>
</HTML>

A execução do codigo acima produz a seguinte página : (Estamos usando o Personal Web Server )

Você deve preencher o formulário e a seguir clicar no botão - Salvar Registro. Isto irá acionar o arquivo incluir.asp que usando os métodos AddNew e Update irá incluir os dados no arquivo. Vejamos o código de incluir2.asp:

<HTML>
<HEAD>
<TITLE>incluir2.asp - Exemplo</TITLE>
</HEAD>
<BODY>
<H1> Incluindo um novo cliente </H1>
<%

Dim con
Dim rst
Const adOpenKeyset = 1
Const adLockOptimistic = 3

' Cria os objetos
Set con = Server.CreateObject("ADODB.Connection")
Set rst = Server.CreateObject("ADODB.Recordset")

' Abre a conexão com o banco de dados agenda.mdb
con.Open "DBQ=C:\asp_db\agenda.mdb;DRIVER={Microsoft Access Driver (*.mdb)}"

' Cria um Recordset do tipo keyset baseado na tabela clientes
' usando o bloqueio otimista
rst.Open "SELECT * FROM clientes", con, adOpenKeyset, adLockOptimistic

' Cria um registro em branco
rst.AddNew

  ' Recebe os dados do formulário e os atribui aos campos da tabela cliente
  rst("Nome")= Request.Form("Nome")
  rst("Endereco")= Request.Form("Endereco")
  rst("Cidade")= Request.Form("Cidade")
  rst("Estado")= Request.Form("Estado")
  rst("Cep")= Request.Form("Cep")

' Salva o registro 
rst.Update

Response.Write "<B>Registro salvo com sucesso !</B>"

rst.Close
con.Close
%>
<BR><A HREF="menu.html">Retorna a página principal</A>
</BODY>
</HTML>

Note que o arquivo agenda.mdb esta no diretório c:\asp_db. O formulário preenchido esta mostrado abaixo e quando o usuario clicar no botão Salvar Registro o arquivo incluir2.asp é processado.

 

O resultado do processamento do arquivo incluir2.asp é o seguinte:

Voltaremos a este assunto em outro artigo. Até lá... :-)


retorna