Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Oracley Asp - Net SP
Oracley Asp - Net SP
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; / ----------------------------------------------------------------------
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; /
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
Clases: Datos.cs
/// <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(); } } }
/// <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().
public partial class Productos : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { GridView1.DataSource=Producto.ObtenerProductos(); GridView1.DataBind(); } }
Control 1 Label 1 TextBox 1 Label 1 TextBox 1 Label 1 TextBox 1 Label 1 TextBox 1 Button
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.
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(); } }
Presione F5.
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>
ID btnActualizarProducto btnCancelar
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 using using using using using System; System.Collections.Generic; System.Linq; System.Web; System.Web.UI; 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 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