Está en la página 1de 17

Lab 1: Creacin de una aplicacin ASP.

NET utilizando
procedimientos almacenados de Oracle.
Requerimientos de este laboratorio:
Oracle 10g u 11g Servidor
Visual Studio 2008 o Visual Studio 2010.
Paso 1: Inicie en Oracle para crear las tablas y los procedimientos almacenados.

















---Tabla Productos------
CREATE TABLE Productos
(
ProductoID int not null,
Nombre varchar2(50) not null,
Descripcion varchar2(1000) null,
Precio numeric(20,4) default (0.0),
Imagen varchar2(50) default 'GenericImagen.png'
);
-----Agregar Condicin-------------
ALTER TABLE Productos ADD CONSTRAINT PK_Productos PRIMARY KEY (ProductoID);
-----Crear Secuencia---------------
CREATE SEQUENCE productos_secuencia START WITH 1 INCREMENT BY 1;
INSERT INTO Productos values (producto_secuencia.NextVal,'El Mundo Sin Nosotros
(Spanish Edition) ','Por Alan Weisman',2.99,'g1.jpg');
INSERT INTO Productos values (producto_secuencia.NextVal,'Handbook of Knots, the
(Spanish Edition) ','Por Des Pawson',7.99,'g2.jpg');
INSERT INTO Productos values (producto_secuencia.NextVal,'Grayson (ESPANOL)','Por
Lynne Cox ',7.99,'g3.jpg');

----------------------------------------------------------------------
CREATE OR REPLACE PROCEDURE ObtenerProductos
(
p_Data OUT SYS_REFCURSOR
)
AS
BEGIN
OPEN P_Data FOR SELECT ProductoID,Nombre,Descripcion,Precio,Imagen FROM
Productos;
END ObtenerProductos;
/
----------------------------------------------------------------------




















Paso 1: Abrir el sitio web llamado Lab1OracleASPNET_Comienzo, usted puede descargarlo de:
http://public.blu.livefilestore.com/y1pry6OJmZ_ck2qvXu6CsDstZb3N5SUelXGoTIAXaokoY0KBwrVTFRmjPXbKA3
rPJ_wHIpzMEbJSk7ytTU_lS27Sw/Lab1OracleASPNET_Comienzo.rar?download
Paso 2: Crear las siguiente clases en la carpeta APP_Code del Proyecto ASP.NET
CREATE PROCEDURE Agregar_Producto
(
p_Nombre IN varchar2,
p_Descripcion IN varchar2,
p_Precio IN numeric,
p_Imagen IN varchar2
)
AS
BEGIN
INSERT INTO Productos
VALUES
(producto_secuencia.nextval,p_Nombre,p_Descripcion,p_Precio,p_Imagen);
END;
/

CREATE PROCEDURE Eliminar_Producto
(
p_ProductoID in int
)
AS
BEGIN
DELETE FROM Productos
WHERE ProductoID = p_ProductoID;
END;
/

CREATE PROCEDURE Actualizar_Producto
(
p_ProductoID in int,
p_Nombre IN varchar2,
p_Descripcion IN varchar2,
p_Precio IN numeric,
p_Imagen IN varchar2
)
AS
BEGIN
UPDATE Productos SET Nombre =
p_Nombre,Descripcion=p_Descripcion,Precio=p_Precio,Imagen=p_Imagen
WHERE ProductoID=p_ProductoID;
END;
/



Clases: Datos.cs






















using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data
using System.Data.OracleClient;


/// <summary>
/// Clase de Metodos.
/// </summary>
public class Datos
{

static private string cadenaConexion = "Data Source=localhost/CODEAPP;User
ID=SYSTEM;Password=admin;Unicode=True;";

public static OracleCommand CrearComandoSP()
{
OracleConnection _conexion = new OracleConnection();
_conexion.ConnectionString = cadenaConexion;
OracleCommand _comando = new OracleCommand();
_comando = _conexion.CreateCommand();
_comando.CommandType = CommandType.StoredProcedure;
return _comando;
}

public static DataTable RegresarDatos(OracleCommand comando)
{
DataTable _tabla = new DataTable();
try
{
comando.Connection.Open();
OracleDataAdapter adaptador = new OracleDataAdapter();
adaptador.SelectCommand = comando;
adaptador.Fill(_tabla);
}
catch (Exception ex)
{throw ex;}
finally
{comando.Connection.Close();}
return _tabla;
}

public static void EjecutarSentencia(OracleCommand comando)
{
try
{
comando.Connection.Open();
comando.ExecuteNonQuery();
}
catch (Exception ex)
{ throw ex; }
finally
{ comando.Connection.Close(); }
}

}



El primer mtodo que debe crear es ObtenerProductos();












Paso 2: Cree un nuevo Formulario
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.OracleClient;

/// <summary>
/// Summary description for Producto
/// </summary>
public class Producto
{
public Producto()
{
//
// TODO: Add constructor logic here
//
}

public static DataTable ObtenerProductos()
{
OracleCommand _comando = Datos.CrearComandoSP();
_comando.CommandText = "ObtenerProductos";
_comando.Parameters.Add("P_Data", OracleType.Cursor).Direction =
ParameterDirection.Output;
return Datos.RegresarDatos(_comando);
}
}




Coloque un control gridview para mostrar los datos y su respectivo cdigo en el evento Load().










Agregue los siguientes controles:
Control ID Text
1 Label lblNombre Nombre
1 TextBox txtNombre
1 Label lblDescripcion Descripcin
1 TextBox txtDescripcion
1 Label lblPrecio Precio
1 TextBox txtPrecio
1 Label lblImagen Imagen
1 TextBox txtImagen
1 Button btnAgregarProducto Agregar Producto

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Productos : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
GridView1.DataSource=Producto.ObtenerProductos();
GridView1.DataBind();
}
}



Agregue los siguientes mtodos a Producto.cs.














public static void AgregarProducto(string nombre, string descripcion, double
precio, string imagen)
{
OracleCommand _comando = Datos.CrearComandoSP();
_comando.CommandText = "Agregar_Producto";

OracleParameter param = _comando.CreateParameter();
param.ParameterName = "p_Nombre";
param.Direction = ParameterDirection.Input;
param.Value = nombre;
param.OracleType = OracleType.VarChar;
_comando.Parameters.Add(param);

param = _comando.CreateParameter();
param.ParameterName = "p_Descripcion";
param.Direction = ParameterDirection.Input;
param.Value = descripcion;
param.OracleType = OracleType.VarChar;
_comando.Parameters.Add(param);

param = _comando.CreateParameter();
param.ParameterName = "p_Precio";
param.Direction = ParameterDirection.Input;
param.Value = precio;
param.OracleType = OracleType.Number;
_comando.Parameters.Add(param);

param = _comando.CreateParameter();
param.ParameterName = "p_Imagen";
param.Direction = ParameterDirection.Input;
param.Value = imagen;
param.OracleType = OracleType.VarChar;
_comando.Parameters.Add(param);

Datos.EjecutarSentencia(_comando);
}




























public static void EliminarProducto(string productoID)
{
OracleCommand _comando = Datos.CrearComandoSP();
_comando.CommandText = "EliminarProducto";
OracleParameter param = _comando.CreateParameter();
param.ParameterName = "p_ProductoID";
param.Direction = ParameterDirection.Input;
param.Value = productoID;
param.OracleType = OracleType.Int32;
_comando.Parameters.Add(param);
Datos.EjecutarSentencia(_comando);
}

public static void ActualizarProducto(string productoid, string nombre, string
descripcion, double precio, string imagen)
{
OracleCommand _comando = Datos.CrearComandoSP();
_comando.CommandText = "ActualizarProducto";

OracleParameter param = _comando.CreateParameter();
param.ParameterName = "p_ProductoID";
param.Direction = ParameterDirection.Input;
param.Value = productoid;
param.OracleType = OracleType.Int32;
_comando.Parameters.Add(param);


param = _comando.CreateParameter();
param.ParameterName = "p_Nombre";
param.Direction = ParameterDirection.Input;
param.Value = nombre;
param.OracleType = OracleType.VarChar;
_comando.Parameters.Add(param);


param = _comando.CreateParameter();
param.ParameterName = "p_Descripcion";
param.Direction = ParameterDirection.Input;
param.Value = descripcion;
param.OracleType = OracleType.VarChar;
_comando.Parameters.Add(param);


param = _comando.CreateParameter();
param.ParameterName = "p_Precio";
param.Direction = ParameterDirection.Input;
param.Value = precio;
param.OracleType = OracleType.Number;
_comando.Parameters.Add(param);

param = _comando.CreateParameter();
param.ParameterName = "p_Imagen";
param.Direction = ParameterDirection.Input;
param.Value = imagen;
param.OracleType = OracleType.Varchar;
_comando.Parameters.Add(param);
Datos.EjecutarSentencia(_comando);
}



Agregue los siguientes mtodos Actualizar(), Limpiar() y en el evento clic del botn Agregar Producto.















Presione F5.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Productos : System.Web.UI.Page
{
public void Limpiar()
{
txtNombre.Text = "";
txtDescripcion.Text = "";
txtImagen.Text = "";
txtPrecio.Text = "";
}
public void Actualizar()
{
GridView1.DataSource = Producto.ObtenerProductos();
GridView1.DataBind();
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Actualizar();
}

}
protected void btnAgregarProducto_Click(object sender, EventArgs e)
{
Producto.AgregarProducto(txtNombre.Text, txtDescripcion.Text,
double.Parse(txtPrecio.Text), txtImagen.Text);
Actualizar();
Limpiar();
}
}


Personalizando el GridView para el manejo de los datos.

Cdigo HTML:











<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
CellPadding="4" ForeColor="#333333" GridLines="None" DataKeyNames="ProductoID"
onselectedindexchanged="GridView1_SelectedIndexChanged"
onrowdatabound="GridView1_RowDataBound"
onrowdeleting="GridView1_RowDeleting">
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
<Columns>
<asp:commandfield ShowSelectButton="true" SelectText="Seleccionar"/>
<asp:BoundField DataField="ProductoID" HeaderText="ID"/>
<asp:BoundField DataField="Nombre" HeaderText="Nombre" />
<asp:BoundField DataField="Descripcion" HeaderText="Descripcin" />
<asp:BoundField DataField="Precio" HeaderText="Precio" />
<asp:BoundField DataField="Imagen" HeaderText="Imagen" />
<asp:TemplateField HeaderText="">
<ItemTemplate>
<asp:LinkButton ID="lkEliminar" CommandArgument='<%# Eval("ProductoID") %>'
CommandName="Delete" runat="server">Eliminar</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>

</Columns>
<EditRowStyle BackColor="#999999" />
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
<SortedAscendingCellStyle BackColor="#E9E7E2" />
<SortedAscendingHeaderStyle BackColor="#506C8C" />
<SortedDescendingCellStyle BackColor="#FFFDF8" />
<SortedDescendingHeaderStyle BackColor="#6F8DAE" />
</asp:GridView>


Agregue los siguientes controles:
Control ID Text
1 Button btnActualizarProducto Actualizar Producto
1 Button btnCancelar Cancelar


Necesitar agregar los siguientes eventos del Gridview en Clic Derecho Propiedades del control Eventos
despus dando doble clic en cada uno de ellos.

Cdigo Completo:












using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Productos : System.Web.UI.Page
{
public void Limpiar()
{
txtNombre.Text = "";
txtDescripcion.Text = "";
txtImagen.Text = "";
txtPrecio.Text = "";
}
public void Actualizar()
{
GridView1.DataSource = Producto.ObtenerProductos();
GridView1.DataBind();
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Actualizar();
}

}






























protected void btnAgregarProducto_Click(object sender, EventArgs e)
{
if (txtNombre.Text != "")
{
Producto.AgregarProducto(txtNombre.Text, txtDescripcion.Text,
double.Parse(txtPrecio.Text), txtImagen.Text);
Actualizar();
Limpiar();
}
else
{
Response.Write("Debe llenar todos los campos");
}
}

protected void btnCancelar_Click(object sender, EventArgs e)
{
Limpiar();
btnActualizarProducto.Enabled = false;
btnAgregarProducto.Enabled = true;
}

protected void btnActualizarProducto_Click(object sender, EventArgs e)
{
GridViewRow fila = GridView1.SelectedRow;
string productoID = fila.Cells[1].Text;
Producto.ActualizarProducto(productoID, txtNombre.Text, txtDescripcion.Text,
double.Parse(txtPrecio.Text), txtImagen.Text);
Actualizar();
Limpiar();
btnActualizarProducto.Enabled = false;
btnAgregarProducto.Enabled = true;
}


protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
GridViewRow fila = GridView1.SelectedRow;
txtNombre.Text = fila.Cells[2].Text;
txtDescripcion.Text = fila.Cells[3].Text;
txtPrecio.Text = fila.Cells[4].Text;
txtImagen.Text = fila.Cells[5].Text;
btnActualizarProducto.Enabled = true;
btnAgregarProducto.Enabled = false;

}


protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
LinkButton l = (LinkButton)e.Row.FindControl("lkEliminar");
l.Attributes.Add("onclick", "javascript:return " +
"confirm('Esta seguro de eliminar el siguiente libro: " +
DataBinder.Eval(e.Row.DataItem, "Nombre") + "')");
}
}

protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{


string productoID = GridView1.DataKeys[e.RowIndex].Value.ToString();
Producto.EliminarProducto(productoID);
Actualizar();
}
}



Presione F5:














Material Final de descarga: http://ckbwpg.blu.livefilestore.com/y1pfjfRMeBj3Xe-
jjPETTCEV2u71ogbxTVL55tboZ3qSV27KKcrP9y2Y0_TnvYOH8YERuNsn1mwLeUeDsdudukNeyiKlvNEiYR2/Lab1Or
acleASPNET_Fin.rar?download

Material Elaborado para Tecnologas Microsoft y para la comunidad de estudiantes y profesionales.
Edison Daniel Garca Chias
Microsoft Student Partner / Microsoft Mxico.
edison@student-partners.com
http://mredison.wordpress.com

También podría gustarte