Les comparto los siguientes dos pdfs del Curso
, una disculpa en el atraso.
http://mredison.files.wordpress.com/2009/11/martes17noviembre2009-parte1.pdf
http://mredison.files.wordpress.com/2009/11/miercoles18noviembre2009-parte2.pdf
Saludos.
Les comparto los siguientes dos pdfs del Curso
, una disculpa en el atraso.
http://mredison.files.wordpress.com/2009/11/martes17noviembre2009-parte1.pdf
http://mredison.files.wordpress.com/2009/11/miercoles18noviembre2009-parte2.pdf
Saludos.
Creación de una aplicación ASP.NET utilizando procedimientos almacenados de Oracle.
Requerimientos:
· 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 Condición------------- 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'); ----------------------------------------------------------------------
Procedimientos Almacenados:
---------------------------------------------------------------------- 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: AQUÍ
Paso 2: Crear las siguiente clases en la carpeta APP_Code del Proyecto ASP.NET
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 método que debe crear es ObtenerProductos();
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);
}
}
Paso 2: Cree un nuevo Formulario llamado Productos.aspx
Coloque un control gridview para mostrar los datos y su respectivo código en el evento Load().
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();
}
}
Presione F5.
Agregue los siguientes controles:
|
Control |
ID |
Text |
|
1 Label |
lblNombre |
Nombre |
|
1 TextBox |
txtNombre |
|
|
1 Label |
lblDescripcion |
Descripción |
|
1 TextBox |
txtDescripcion |
|
|
1 Label |
lblPrecio |
Precio |
|
1 TextBox |
txtPrecio |
|
|
1 Label |
lblImagen |
Imagen |
|
1 TextBox |
txtImagen |
|
|
1 Button |
btnAgregarProducto |
Agregar Producto |
Agregue los siguientes métodos 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 métodos Actualizar(), Limpiar() y en el evento clic del botón 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
{
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.
Personalizando el GridView para el manejo de los datos.
Código HTML:
Agregue los siguientes controles:
<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="Descripción" />
<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>
|
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 – después dando doble clic en cada uno de ellos.
Código 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:
PDF Descargable: http://mredison.files.wordpress.com/2009/11/oracleaspnet-sp.pdf
Material Final de descarga: AQUI
Saludos, Nos vemos en la siguiente entrega de Oracle y .NET
Edison Daniel García Chiñas
Que tal estimados lectores, una disculpa por el retraso en la actualización del blog, les comparto el tercer tema dado en el curso de ADO.NET. Nos vemos en la siguiente entrega.
URL:http://mredison.files.wordpress.com/2009/11/viernes13noviembre2009.pdf
Les coloco el segundo pdf,que se vio en la sesión de hoy. Nos vemos mañana.
Comentario, dudas por esta sección.
Gracias.
PDF: http://mredison.files.wordpress.com/2009/11/miercoles11noviembre2009.pdf
Saludos
Estimados lectores que estan siguiendo el curso online de ADO.NET, les coloco el material visto el día de hoy en el curso presencial de ADO.NET.
Este laboratorio contiene los temas:
Preguntas o comentarios en esta sección.
Saludos…
PDF: http://mredison.files.wordpress.com/2009/11/martes10noviembre2009.pdf
Nos vemos mañana con otro tema del curso.
Estimados lectores, el curso de ADO.NET que se dará de manera presencial en Veracruz, México, se replicará en línea a partir del Martes 10 de Noviembre, podrán seguirlo desde este blog, descargar los PDF, ejercicios y documentación del curso.
Atentamente Edison. Las preguntas o comentarios serán de acuerdo a cada post o tema (día) en la sección de comentarios. Gracias. En hora buena.
Les comparto el programa.
Nota: El primer tema se colocará el Martes de 10 de Noviembre del 2009.
Saludos.
Recent Comments