[ASP .NET] Creando una WebSlice con datos de una BD y un Repeater SQL 2008

15 05 2009

Saludos amigos, una novedad de ASP .Net en conjunto con Internet Explorer 8, es que nos permite crear Web Slice, que son pequeños extractos con información de páginas Web, las cuales podemos agregar a nuestra Barra de favoritos de Internet Explorer 8. A continuación les dejo un ejemplo de la creación de una Web Slice, la cual se llena con información de una base de datos en SQL Server 2008 a través de un objeto Repeater.

Nota: Debe configurar la cadena de conexión a la base de datos, vea la entrada anterior: http://sqlpsykrest.wordpress.com/2009/05/14/vs-2008asp-net-crear-una-cadena-de-conexin-en-asp-net-y-ejecutar-un-comando-a-una-bd-de-sql-server-2008/

Paso 1, debemos agregar la Web Slice, esto consiste en insertar un DIV que tenga una clase CSS llamada hslice y ID igual a 1.

Ejemplo:

<div class="hslice" id="1">
            <p class="entry-title">Título de la Web Slice</p>
            <div class="entry-content">
                  <!--Contenido de la Web Slice-->
            </div>
        </div>

Para indicar el título de la Web Slice, se debe colocar una clase CSS aplicada a un elemento XHTML Párrafo <p> llamada “entry-title”, el contenido de la Web Slice se determina agregando un elemento DIV con una clase CSS llamada “entry-content” dentro del DIV principal hslice.

Paso 2, Agregaremos como contenido de la Web Slice un objeto REPEATER, el cual selecciona datos sobre Productos de una base de datos en SQL Server 2008.

Ejemplo:

<h2>Ejemplo de WebSlice</h2>
        <div class="hslice" id="1">
            <p class="entry-title">WebSlice desde SqlPsyKrest Blog.</p>
            <div class="entry-content">
                  <asp:Repeater runat="server" ID="rProductos">
                        <HeaderTemplate>
                            <table class="tabla" cellpadding="3px" cellspacing="0" >
                                <tr>
                                    <td colspan="4" class="titulo" align="center" >Productos</td>
                                </tr>        
                        </HeaderTemplate>
                        <FooterTemplate>
                            </table>
                        </FooterTemplate>
                        <ItemTemplate>
                            <tr>
                                <td class="nombre"><%#DataBinder.Eval(Container.DataItem, "nombre")%></td>
                                <td class="precio"><%#DataBinder.Eval(Container.DataItem, "precio")%></td> 
                            
                        </ItemTemplate>
                        <AlternatingItemTemplate>
                                <td class="nombre"><%#DataBinder.Eval(Container.DataItem, "nombre")%></td>
                                <td class="precio"><%#DataBinder.Eval(Container.DataItem, "precio")%></td> 
                            </tr>                    
                        </AlternatingItemTemplate>
                </asp:Repeater>      
            </div>
        </div>

El DataBinder.Eval obtiene los datos de las columnas del comando que se ejecuta en la base da datos.

Paso3, Agreguemos en el code-behine en el evento Load del formulario Web la ejecución del comando de la base datos, el cual obtendrá la información de los productos que se cargaran en un objeto Repeater llamado repeatProductos que posteriormente se mostrarán en la Web Slice.

Ejemplo:

Imports System.Web
Imports System.Web.Configuration
Imports System.Data
Imports System.Data.SqlClient

Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        If Not Me.IsPostBack Then

            Dim conn As New SqlConnection(WebConfigurationManager.ConnectionStrings("cnx").ConnectionString)
            Dim comm As New SqlCommand("SELECT nombre, precio FROM DEMO_PRODUCTO", conn)
            comm.CommandType = CommandType.Text

            Dim ds As DataSet = Nothing
            Dim da As SqlDataAdapter = Nothing

            Try
                Using conn
                    conn.Open()
                    ds = New DataSet()
                    da = New SqlDataAdapter()
                    da.SelectCommand = comm
                    da.Fill(ds)
                End Using

                comm.Dispose()

            Catch ex As Exception

            Finally
                If conn.State = ConnectionState.Open Then
                    conn.Close()
                    conn.Dispose()
                End If
            End Try


            Me.repeatProductos.DataSource = ds
            Me.repeatProductos.DataBind()

        End If

    End Sub
End Class

En el ejemplo anterior utilizamos un objeto Dataset y un SqlDataAdapter, los cuales reciben la información de la base da datos y la almacenan para cargarla en el objeto Repeater llamado repeatProductos,  una vez obtenida la información, la Web Slice esta terminada y lista para mostrando datos de los productos al usuario.

image

Paso 4, Agreguemos la Web Slice al Barra de favoritos de Internet Explorer 8:

image

image

Por último observen como se agrego la Web Slice a la Barra de favoritos de Internet Explorer 8,  de esta manera los usuario pueden estar viendo información especifica y actualizada de sus sitios Web con solo dar clic en ella.

image

Espero les sea de ayuda, me despido de ustedes y quedo en espera de sus comentarios.

Etiquetas de Technorati: ,,




[VS 2008–ASP NET] Crear una cadena de conexión en ASP .NET y ejecutar un comando a una BD de SQL Server 2008.

14 05 2009

Saludos amigos, en esta ocasión les mostrare un ejemplo de como crear una cadena de conexión en ASP .NET con Visual Studio 2008 hacia una base de datos creada en SQL Server 2008.

1. El primer paso es conocer la siguiente información de la base de datos y la instancia de SQL a la cual nos vamos a conectar.

a) Nombre de la instancia.

b) Nombre de la base de datos.

c) Usuario y contraseña del usuario que tiene permisos sobre la base de datos.

Ejemplo:

Instancia: EQUIPO.

BD: prueba.

User: sa.

Pass: sasysadmin.

Nota: Si no conoces el nombre de la instancia del SQL server ejecuta el siguiente comando.

USE master;
GO
SELECT [name], data_source FROM sys.servers;

Resultado:

image

Nota: SI quieres ver las bases de datos que están en la instancia del SQL server ejecuta el siguiente comando.

USE master;
GO
SELECT [name] FROM sys.databases;

Resultado:

image

2.  Ahora creamos un nuevo sitio Web en Visual Studio 2008, en el archivo de configuración Web ( web.config ), buscamos el elemento <connectionStrings> contenido dentro del elemento raíz <configuration> y agregamos una cadena de conexión como lo muestra el siguiente ejemplo:

<connectionStrings>
    <add name="cnxCurso"
         connectionString="Data source=EQUIPO; Initial catalog=Prueba; User id=admIvan; Password=123456"
         providerName="System.Data.SqlClient"/>
  </connectionStrings>

Explico brevemente la cadena:

Deben dar un nombre a la cadena de conexión en esta caso la llamaremos CNX .

El atributo connectionString debe tener los siguientes datos:

Data source es la instancia que utilizamos en SQL Server.

Initial catalog es el nombre de la base de datos a utilizar.

User id es el nombre de usuario que se conectara a la base de datos.

Password es la contraseña del usuario de la base de datos.

Por último el providerName que es un espacio de nombres de System.Data.SqlClient.

3. Agregaremos dos cajas de texto, un botón y una etiqueta en un formulario web.

image

4. En el Code-Behine de nuestro formulario web agregamos los siguientes espacios de nombres necesarios para conectarnos a las base da datos y trabajar de manera efectiva.

Nota: Para ir al code-behine debemos presionar la tecla F7 estando en el formulario Web.

Imports System.Web
Imports System.Web.Configuration

Imports System.Data
Imports System.Data.SqlClient

5. Agregar el siguiente código en el evento clic del botón del formulario web.

Protected Sub btnAceptar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnAceptar.Click

        Dim idUsuario As Integer = 0
        Dim msg As String = "Usuario no encontrado en la base de datos."

        Dim conn As New SqlConnection(WebConfigurationManager.ConnectionStrings("cnxCurso").ConnectionString)
        Dim comm As New SqlCommand("SELECT id FROM dbo.PRB_Usuario WHERE Email = @email AND [Password] = @pass", conn)

        Try

            With comm
                .CommandType = CommandType.Text
                .Parameters.AddWithValue("email", Me.txtUser.Text.Trim())
                .Parameters.AddWithValue("pass", Me.txtPass.Text.Trim())
            End With

            Using conn
                conn.Open()

                With comm

                    idUsuario = .ExecuteScalar()
                    .Parameters.Clear()
                    .Dispose()

                End With

                If idUsuario > 0 Then
                    msg = "El usuario esta registrado en la base de datos."
                End If

            End Using

        Catch ex As SqlException
            'Controlar excepción SQL
        Catch ex As Exception
            'Controlar exception
        Finally
            If conn.State = ConnectionState.Open Then
                conn.Close()
                conn.Dispose()
            End If

        End Try

        Me.lblMsg.Text = msg

    End Sub

 

Es importante poner atención a la hora de crear la cadena de conexión ya que el nombre debe de ser el mismo al que se agrego en el archivo de configuración web (web.config).

image

El comando al crearlo lleva dos parámetros iniciales, el comando de base de base de datos ( el cual selecciona el id de nuestro usuario) , y la cadena de conexión que utilizara para llevar acabo la ejecución.

Agregamos los parámetros que recibirá el comando para poder consultar los datos, a esto se le llama parametrizar sentencias o comandos SQL, para evitar los ataques de inyección de código.

Para terminar se abre la conexión, y se ejecutamos el comando SQL de manera Scalar (ExecuteScalar), es decir que solo nos regrese el valor de la primer fila y primer columna del conjunto de resultados obtenidos, para este caso siempre nos regresara un valor, este valor se asigna a nuestra etiqueta que mostrara si el usuario se encuentra o no en la base de datos.

Resultado:

image

 

Bueno amigos, espero les sea de ayuda, próximamente subiré videos.








Seguir

Get every new post delivered to your Inbox.