ASP.NET - Acessando dados com ADO.NET


 

Já escrevi vários artigos sobre como acessar dados em páginas ASP.NET com ADO.NET. Apenas para lembrar abaixo tem a relação dos artigos :

Neste artigo volto a falar sobre o acesso a dados em páginas ASP.NET com ADO.NET. Por quê ?

 

Porque em todos os artigos citados eu sempre utilizava um controle ASP.NET para exibir os dados. Pois neste artigo ire mostrar como acessar os dados e exibir os dados de uma fonte de dados Access sem usar nenhum controle. Usarei o já famoso Response.write.

 

Eu tenho uma base de dados Access chamada catalogo.mdb e nesta fonte de dados tenho uma tabela chamada produtos com a seguinte estrutura:

 

 

Irei então realizar os seguintes passos para alcançar o meu objetivo : exibir os dado em um página ASP.NET sem usar nenhum controle.

Vou utilizar o Web Matrix onde estarei escrevendo o código e testando a aplicação usando o servidor Web Matrix.

 

1.    Abra o ASP.NET Web Matrix.
2.
    Selecione (General) do painel Templates.
3.
    Selecione o modelo ASP.NET Page.
4.
    Digite um caminho de arquivo na caixa Location. (no meu caso eu informei : d:\aspn\acc_adonet\)
5.
    Digite accADONet na caixa Filename. (você pode usar qualquer outro nome de arquivo válido)

6.    Selecione Visual Basic na caixa drop-down Language.
7.
    Clique OK.

 

Agora na guia All do Web Matrix inclua o código abaixo:

 

<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.OleDb" %>

<script runat="server">

Sub Page_Load(sender As Object, e As EventArgs)

Dim conn As OleDbConnection
Dim da As OleDbDataAdapter
dim dt As DataTable
dim i, n As Integer
dim strSql As String

Response.Write("<p><font face='Verdana' size='5' color=blue><strong>")
Response.Write("<img src='maco10.gif'> - Catálogo de Produtos")
Response.Write("</strong></font><hr noshade size='1'>")
Response.Write("<p><font face='Verdana' size='2'> ")

'define a string SQL para selecinar os registros da tabela produtos
strSql = "SELECT * FROM Produtos ORDER BY ID ASC;"

'define a string de conexao com a base de dados
conn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & _
Server.MapPath("dados\catalogo.mdb") & ";")

' Criar o comando
da = New OleDbDataAdapter(strSql, conn)

' preencher o DataTable
dt = New DataTable
da.Fill(dt)

'obtem o no. de linhas da tabela
n = dt.Rows.Count

'se não há linhas informa ao usuário
If n = 0 then
    Response.Write("<p>sem registros.</p>")
Else
    Response.Write(n.ToString & " produtos encontrados.<br>")
    Response.Write("<p>")

    'define as variáveis para guardar informação sobre os registros
    Dim sNome, sLink, sDescricao As String
    Dim nCodigo As Integer

    'percorre os registros obtendo e exibindo cada um na pagina
   
For i = 0 To n - 1
        nCodigo = dt.Rows(i).Item("Id")
        sNome = dt.Rows(i).Item("Nome")
        sLink = dt.Rows(i).Item("Link")
        sDescricao = dt.Rows(i).Item("Comentario")

        Response.Write(nCodigo.ToString("0000") & "- <a href='" & sLink & "'>" & sNome & "</a><br><font color=blue>" &  sDescricao & "</font><br><br>")

   Next

   Response.Write("</p>")

End If

Response.Write("</font></p>")

End Sub

</script>
<html>
<head>
<title>Acessando dados usando ADO.NET</title>
</head>
<body text="#000000" bgcolor="#ffffff">
<hr noshade="noshade" size="1" />
<center><font face="Verdana" size="2">Quer saber mais sobre ASP.NET ? visite : <a href="www.macoratti.net">www.macoratti.net</a></font>
</center>
</body>
</html>

 

Agora basta testar.  O resultado obtido esta mostrado na figura abaixo:

 

 

Na página acima cada Nome de produto esta associado a um link de forma que se o usuário clicar sobre o mesmo a página do link será aberta exibindo mais informações sobre o produto.

 

Nota: O banco de dados catalogo.mdb deve estar em uma pasta chamado dados  no mesmo diretório de localização da página accADONet.aspx por que eu estou usando Server.MapPath("dados\catalogo.mdb"). 
 

È simples , é fácil é ASP.NET ...

 


José Carlos Macoratti