ASP.NET 2.0 - Criando um Blog


Que tal criar um blog de discussão usando ASP.NET 2.0 ?

Os blogs estão na moda não é mesmo !!! Vamos então unir o útil ao prático e mostrar como criar um blog usando alguns dos recursos da ASP.NET 2.0.

Este artigo esta baseado inteiramente no artigo de Bipin Joshi, eu apenas fiz pequenas alterações e adaptações. O objetivo é explorar as novidades da ASP.NET 2.0 e mostrar que com pouco esforço de codificação podemos criar páginas Web interativas funcionais sem ter que fazer um mestrado na área.

Nosso Blog terá os recursos básicos que qualquer blog possui:  mensagens, comentários, categorias e link. Além destes recursos o blog terá uma área de administração básica para gerenciar as categorias, os links e as mensagens.

As ferramentas que eu vou usar são gratuitas de forma que você não vai gastar um centavo para criar o seu blog;

Criando o projeto, o banco de dados e as tabelas

A primeira coisa a fazer é criar um novo web site; eu chamei de BlogMac, mas você pode alterar a o nome a seu critério. Abra o Visual Web Developer Express e no menu File selecione New Web Site, usando o template ASP. NET Web Site, e, informando o nome sugerido. A página Default.aspx que é criada por padrão deve ser excluída do projeto.

Vamos agora criar o banco de dados e as tabelas onde serão persistidas as informações do nosso Blog. Clique com o botão direito sobre o projeto e selecione a opção Add New Item. Na janela Templates selecione SQL DataBase informando o nome BlogMac, ou outro a seu critério;

O ASP.NET irá emitir um aviso informando que o banco será armazenado na pasta App_Data. Confirme este opção.

Após criar o banco de dados BlogMac.mdf , vamos criar 4 tabelas:

  1. Categorias : As categorias de mensagens do blog;
  2. Mensagens : As mensagens postadas no blog;
  3. Comentarios: Os comentários postados no blog;
  4. Links : Os links do blog;

Assim , na janela DataBase Explorer , expanda os objetos do banco de dados e clique com o botão direito do mouse sobre o objeto Table e selecione a opção: Add New Table.  A seguir defina cada uma das tabelas acima com os campos mostrados na figura abaixo:

- Tabela Categorias:

Nesta tabela e em todas as outras vamos definir o campo chave primária como sendo do tipo Identity , desta forma o campo será de numeração automática.

- Tabela Comentarios :

 - Tabela Mensagens :

- Tabela Links :

Ao final do processo , devemos ter o seguinte resultado. Na figura abaixo eu já criei o diagrama do banco de dados;

Com a base de dados e as tabelas criadas já podemos nos planejar como será feito o acesso aos dados. Esse projeto ira usar o recurso do SqlDataSource de forma a tornar mais simples o desenvolvimento, mas para mostrar como criar uma camada de acesso a dados vou criar um classe chamada AcessoBD  onde irei colocar os métodos de acesso a dados que iremos usar na aplicação Blog.

Clique no nome do projeto com o botão direito do mouse se selecione a opção Add New Item. A seguir na janela Templates selecione Class e informe o nome AcessoBD.vb clicando em Add.

Inclua a seguir o código abaixo no arquivo AcessoBD.vb:

Imports System.Data

Imports System.Data.SqlClient

Imports System.Configuration

Imports System.Text

 

Namespace DAL


Public
Class
AcessoBD


Private
Shared strConn As
String


Shared
Sub New
()

    strConn = ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString

End Sub

 

Public Shared Function ExecuteNonQuery(ByVal query As String) As Integer

   Dim cnn As SqlConnection = New SqlConnection(strConn)

    Dim cmd As SqlCommand = New SqlCommand(query, cnn)

   cnn.Open()


   
Dim retval As Integer = cmd.ExecuteNonQuery()

   cnn.Close()

    Return retval

End Function

 

Public Shared Function ExecuteNonQuery(ByVal query As String, ByVal params() As SqlParameter) As Integer


  
Dim cnn As SqlConnection = New SqlConnection(strConn)

   Dim cmd As SqlCommand = New SqlCommand(query, cnn)
 

   FillParameters(cmd, params)

   cnn.Open()
 

    Dim retval As Integer = cmd.ExecuteNonQuery()

   cnn.Close()

    Return retval

End Function


Public
Shared Function ExecuteReader(ByVal sql As String) As
SqlDataReader


  
Dim cnn As SqlConnection = New SqlConnection(strConn)

   Dim cmd As SqlCommand = New SqlCommand(sql, cnn)

   Return cmd.ExecuteReader(CommandBehavior.CloseConnection)

End Function


Public
Shared Function ExecuteReader(ByVal sql As String, ByVal params() As SqlParameter) As
SqlDataReader

   Dim cnn As SqlConnection = New SqlConnection(strConn)

   Dim cmd As SqlCommand = New SqlCommand(sql, cnn)

   FillParameters(cmd, params)

   Return cmd.ExecuteReader(CommandBehavior.CloseConnection)

End Function

 

Public Shared Function ExecuteScalar(ByVal sql As String) As Object

    Dim cnn As SqlConnection = New SqlConnection(strConn)

     Dim cmd As SqlCommand = New SqlCommand(sql, cnn)
 

    cnn.Open()

     Dim retval As Object = cmd.ExecuteScalar()

    cnn.Close()


Return
retval

End Function

 

Public Shared Function ExecuteScalar(ByVal sql As String, ByVal params() As SqlParameter) As Object


Dim
cnn As SqlConnection = New
SqlConnection(strConn)

Dim cmd As SqlCommand = New SqlCommand(sql, cnn)

 

FillParameters(cmd, params)

cnn.Open()

Dim retval As Object = cmd.ExecuteScalar()

cnn.Close()

Return retval

End Function

Public Shared Function ExecuteDataSet(ByVal sql As String) As DataSet


Dim cnn As SqlConnection = New SqlConnection(strConn)

Dim cmd As SqlCommand = New SqlCommand(sql, cnn)

Dim da As SqlDataAdapter = New SqlDataAdapter

 

da.SelectCommand = cmd

Dim ds As DataSet = New DataSet

da.Fill(ds)

Return ds

End Function
 

Public Shared Function ExecuteDataSet(ByVal sql As String, ByVal params() As SqlParameter) As DataSet


Dim cnn As SqlConnection = New SqlConnection(strConn)

Dim cmd As SqlCommand = New SqlCommand(sql, cnn)


FillParameters(cmd, params)

Dim da As SqlDataAdapter = New SqlDataAdapter


da.SelectCommand = cmd

Dim ds As DataSet = New DataSet


da.Fill(ds)


Return
ds

End Function

Private Shared Sub FillParameters(ByVal cmd As SqlCommand, ByVal parameters() As SqlParameter)

 

Dim i As Integer


For
i = 0 To
parameters.Length - 1

    cmd.Parameters.Add(parameters(i))

Next
 

End Sub

End Class

End Namespace

Para saber mais sobre os conceitos relacionados a camada de dados - DAL (Data Access Layer) veja os artigos:

Neste código temos o Namespace DAL que será usado para acessar os métodos. Note que os métodos são todos estáticos, desta forma não necessitamos instanciar a classe para ter acesso aos mesmos.

Perceba que há duas versões sobrecarregadas (uma sem parâmetros e outra usando parâmetros) dos seguintes métodos:

Obs: No projeto não serão usados todos os métodos definidos na classe acima, mas  você pode estudá-los para reutilizar em seus projetos.

Estamos obtendo a string de conexão do arquivo web.config e executando métodos para retornar dataread, dataset, executar um comando , gerar um valor único e executar consultas que não retornam valores.

No próximo artigo vou criar a master page do blog . Aguarde...

Veja a continuação do artigo em : Criando um Blog II

A vídeo Aula deste artigo esta no Super DVD Vídeo Aulas

Até o próximo artigo ASP .NET 


José Carlos Macoratti