Вы находитесь на странице: 1из 8

Mantenimiento de tablas con ASP.

Net y procedimientos almacenados

A continuación se muestran ejemplos de acceso a datos con ASP.Net a través del uso de procedimientos
almacenados en SQL Server 2005

1. Construir un WebForm que muestre un lista de productos de la base Neptuno, usando


DataReader. Construir otro WebForm que use un DataAdapter y un DataSet

Un DATAREADER es un objeto cuya única función es el acceso a una base de datos para realizar
consultas de sólo lectura.

1.1 Crearemos la siguiente interfaz

1.2 Creamos el procedimiento almacenado

CREATE PROCEDURE pa_ConsultarCategorias


AS
select idcategoría,nombrecategoría from categorías

1.3 Añadimos el siguiente código para cada botón de comando

Imports System.Data
Imports System.Data.SqlClient

Partial Class _Default


Inherits System.Web.UI.Page
Public cnx As New SqlConnection("Data Source=.;Initial
Catalog=Neptuno;Integrated Security=True")

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As


System.EventArgs) Handles Button1.Click
Dim cmd As New SqlCommand("pa_ConsultarCategorias", cnx)
cmd.CommandType = CommandType.StoredProcedure
Dim da As New SqlDataAdapter
da.SelectCommand = cmd
Dim ds As New DataSet()
da.Fill(ds)
gv2.DataSource = ds
gv2.DataBind()

Ing. Luis Dávila Hurtado Página 1 UNPRG - Ciclo 2010-I


Mantenimiento de tablas con ASP.Net y procedimientos almacenados
End Sub

Protected Sub Button2_Click(ByVal sender As Object, ByVal e As


System.EventArgs) Handles Button2.Click
cnx.Open()
Dim cmd As New SqlCommand("pa_ConsultarCategorias", cnx)
cmd.CommandType = CommandType.StoredProcedure
Dim dr As SqlDataReader
dr = cmd.ExecuteReader
gv.DataSource = dr
gv.DataBind()
dr.Close()
cnx.Close()
End Sub
End Class

2. Construir un WebForm que permite dar mantenimiento a la Tabla Clientes de la base Neptuno

2.1 Creamos los procedimientos almacenados que permitían manipular los datos de la tabla
Clientes

CREATE PROC ConsultaClientes


as
select idcliente,nombrecompañía,país from clientes

CREATE PROC pa_actualizaCliente


@id char(5),@nombre varchar(20),@pais varchar(15)
as
update clientes set nombrecompañía=@nombre, país=@pais where
idcliente=@id

CREATE PROC pa_EliminaCliente


@id char(5)
as
delete from clientes where idcliente=@id

CREATE PROC [dbo].[pa_insertaCliente]


@id char(5),@nombre varchar(20),@pais varchar(15)
as
insert into clientes (idcliente,nombrecompañía,país)
values(@id,@nombre,@pais)

Ing. Luis Dávila Hurtado Página 2 UNPRG - Ciclo 2010-I


Mantenimiento de tablas con ASP.Net y procedimientos almacenados

2.2 Construimos la interfaz

La cuadricula de datos es un control GridView, y establecemos su propiedad Name=gv

El control inferior derecho es un botón HTML

El control inferior izquierdo es un LinkButton

Las 2 primeras columnas del GridView los añadiremos modificando el código fuente del archivo
.aspx; puesto que queremos personalizar su comportamiento.

A este webform le llamaremos MantenimientoClientes.aspx . En tiempo de diseño la interfaz se


muestra del siguiente modo:

Ing. Luis Dávila Hurtado Página 3 UNPRG - Ciclo 2010-I


Mantenimiento de tablas con ASP.Net y procedimientos almacenados

2.3 A continuación de muestra el código fuente del archivo MantenimientoClientes.aspx

<%@ Page Language="VB" AutoEventWireup="false"


CodeFile="MantenimientoClientes.aspx.vb" Inherits="MantenimientoClientes" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"


"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >


<head runat="server">
<title>Página sin título</title>
<script language="javascript" type="text/javascript">
function Button2_onclick() {
window.open("registro.aspx","","top=200,left=250,width=200,height=200");
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<br />
<asp:GridView ID="gv" runat="server" AllowPaging="True"
DataKeyNames="idcliente">
<Columns>

<asp:HyperLinkField
DataNavigateUrlFields="idcliente,nombrecompa&#241;&#237;a,pa&#237;s"
DataNavigateUrlFormatString="frmEditarCliente.aspx?var={0}&var1={1}&var2={2}
"
DataTextField="idcliente" DataTextFormatString="Editar"
HeaderText="Encabezado" />

Ing. Luis Dávila Hurtado Página 4 UNPRG - Ciclo 2010-I


Mantenimiento de tablas con ASP.Net y procedimientos almacenados
<asp:TemplateField HeaderText="Eliminar" >
<ItemTemplate>
<asp:CheckBox ID="chkEliminar" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
<PagerSettings Mode="NextPrevious" />
</asp:GridView>
&nbsp;
<asp:LinkButton ID="EliminarMarcados" runat="server"
CausesValidation="False"> Eliminar</asp:LinkButton>
&nbsp; &nbsp;<input id="cmdNuevo" style="width: 83px; height: 37px"
type="button" value="Nuevo" onclick="return Button2_onclick()" />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</div>
</form>
</body>
</html>

2.4 A continuación se muestra el código del archivo MantenimientoClientes.aspx.vb

Imports System.Data
Imports System.Data.SqlClient

Partial Class MantenimientoClientes


Inherits System.Web.UI.Page
Public cnx As New SqlConnection("Data Source=LUCHO-LAPTOP;Initial
Catalog=Neptuno;Integrated Security=True")
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
CargaGrid()
End If
End Sub
Sub CargaGrid()
cnx.Open()
Dim cmd As New SqlCommand("ConsultaClientes", cnx)
cmd.CommandType = Data.CommandType.StoredProcedure
Dim da As New SqlDataAdapter
Dim ds As New DataSet
da.SelectCommand = cmd
da.Fill(ds)
gv.DataSource = ds
gv.DataBind()
cnx.Close()
End Sub

Protected Sub EliminarMarcados_Click(ByVal sender As Object, ByVal e As


System.EventArgs) Handles EliminarMarcados.Click
Dim ListaDeIdsMarcados As String = ""
cnx.Open()
Dim cmd As New SqlCommand("pa_EliminaCliente", cnx)
cmd.CommandType = CommandType.StoredProcedure
Dim prmId As New SqlParameter("@id", SqlDbType.Char, 5,
ParameterDirection.Input)

Ing. Luis Dávila Hurtado Página 5 UNPRG - Ciclo 2010-I


Mantenimiento de tablas con ASP.Net y procedimientos almacenados
Dim i As Integer
For i = 0 To gv.Rows.Count - 1
Dim ElCheckBox As CheckBox =
CType(gv.Rows(i).FindControl("chkEliminar"), CheckBox)
If ElCheckBox.Checked Then
prmId.Value = Trim(gv.DataKeys(i).Value)
cmd.Parameters.Add(prmId)
cmd.ExecuteNonQuery()
cmd.Parameters.RemoveAt(0)
End If
Next
cnx.Close()
CargaGrid()
End Sub

Protected Sub gv_PageIndexChanging(ByVal sender As Object, ByVal e As


System.Web.UI.WebControls.GridViewPageEventArgs) Handles
gv.PageIndexChanging
gv.PageIndex = e.NewPageIndex
CargaGrid()
End Sub
End Class

2.5 Al pulsar el botón Nuevo se apertura una ventana flotante para permitir el ingreso de los
datos del nuevo cliente. A este formulario le llamaremos Registro.aspx; y tiene la siguiente
apariencia

2.6 El código fuente de este web form es:

Imports System.Data
Imports System.Data.SqlClient
Partial Class registro
Inherits System.Web.UI.Page

Ing. Luis Dávila Hurtado Página 6 UNPRG - Ciclo 2010-I


Mantenimiento de tablas con ASP.Net y procedimientos almacenados

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As


System.EventArgs) Handles cmdGuardar.Click
Dim cnx As New SqlConnection("Data Source=LUCHO-LAPTOP;Initial
Catalog=Neptuno;Integrated Security=True")
cnx.Open()
Dim cmd As New SqlCommand("pa_insertaCliente", cnx)
cmd.CommandType = Data.CommandType.StoredProcedure
Dim prmId As New SqlParameter("@id", SqlDbType.Char, 5,
ParameterDirection.Input)
Dim prmNombre As New SqlParameter("@nombre", SqlDbType.NVarChar,
30, ParameterDirection.Input)
Dim prmpais As New SqlParameter("@pais", SqlDbType.NVarChar, 15,
ParameterDirection.Input)

prmId.Value = TextBox1.Text
prmNombre.Value = TextBox2.Text
prmpais.Value = TextBox3.Text
cmd.Parameters.Add(prmId)
cmd.Parameters.Add(prmNombre)
cmd.Parameters.Add(prmpais)
cmd.ExecuteNonQuery()
cnx.Close()
Response.Write("<script>
window.opener.location.reload();window.close();</script>")
End Sub
End Class

2.7 Al pulsar el LinkButton “Editar”, se muestra un webform con la siguiente apariencia

2.8 El código fuente del archivo frmEditarCliente.aspx.vb

Imports System
Imports System.Data
Imports System.Data.SqlClient
Partial Class frmEditarCliente
Inherits System.Web.UI.Page
Public cnx As New SqlConnection("Data Source=.;Initial
Catalog=Neptuno;Integrated Security=True")

Ing. Luis Dávila Hurtado Página 7 UNPRG - Ciclo 2010-I


Mantenimiento de tablas con ASP.Net y procedimientos almacenados
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
TextBox1.Text = Request.QueryString("var")
TextBox2.Text = Request.QueryString("var1")
TextBox3.Text = Request.QueryString("var2")
End If
End Sub

Protected Sub cmdActualizar_Click(ByVal sender As Object, ByVal e As


System.EventArgs) Handles cmdActualizar.Click
cnx.Open()
Dim cmd As New SqlCommand("pa_actualizaCliente", cnx)
cmd.CommandType = CommandType.StoredProcedure
Dim prmId As New SqlParameter("@id", SqlDbType.Char, 5,
ParameterDirection.Input)
Dim prmNom As New SqlParameter("@nombre", SqlDbType.VarChar, 20,
ParameterDirection.Input)
Dim prmPai As New SqlParameter("@pais", SqlDbType.VarChar, 15,
ParameterDirection.Input)
prmId.Value = TextBox1.Text
prmNom.Value = TextBox2.Text
prmPai.Value = TextBox3.Text
cmd.Parameters.Add(prmId)
cmd.Parameters.Add(prmNom)
cmd.Parameters.Add(prmPai)
cmd.ExecuteNonQuery()
cnx.Close()
Response.Redirect("mantenimientoclientes.aspx")
End Sub
End Class

Ing. Luis Dávila Hurtado Página 8 UNPRG - Ciclo 2010-I

Вам также может понравиться