Está en la página 1de 8

Mantenimiento de tablas con ASP.

Net y procedimientos almacenados


A continuacin se muestran ejemplos de acceso a datos con ASP.Net a travs 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 funcin es el acceso a una base de datos para realizar consultas de slo lectura. 1.1 Crearemos la siguiente interfaz

1.2 Creamos el procedimiento almacenado


CREATE PROCEDURE pa_ConsultarCategorias AS select idcategora,nombrecategora from categoras

1.3 Aadimos el siguiente cdigo para cada botn 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()

Pgina 1

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 permitan manipular los datos de la tabla Clientes

CREATE PROC ConsultaClientes as select idcliente,nombrecompaa,pas from clientes

CREATE PROC pa_actualizaCliente @id char(5),@nombre varchar(20),@pais varchar(15) as update clientes set nombrecompaa=@nombre, pas=@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,nombrecompaa,pas) values(@id,@nombre,@pais)

Pgina 2

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 botn HTML El control inferior izquierdo es un LinkButton Las 2 primeras columnas del GridView los aadiremos modificando el cdigo fuente del archivo .aspx; puesto que queremos personalizar su comportamiento.

A este webform le llamaremos MantenimientoClientes.aspx . En tiempo de diseo la interfaz se muestra del siguiente modo:

Pgina 3

Mantenimiento de tablas con ASP.Net y procedimientos almacenados

2.3 A continuacin de muestra el cdigo 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>Pgina sin ttulo</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" />

Pgina 4

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 continuacin se muestra el cdigo 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=.;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)

Pgina 5

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 botn 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 cdigo fuente de este web form es:


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

Pgina 6

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=.;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 cdigo 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")

Pgina 7

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

Pgina 8

También podría gustarte