Pop

28.Aplicaciones web.SQL parte 2.Curso de C# con Visual Studio 2017.

28- . Aplicaciones web.Llamando a BDDD desde la aplicación

   - En este capítulo del curso de programación en c# con visual studio 2017,continuamos con un poco de SQL SERVER. Para ello debéis tener instalado SQL Express.En la anterior entrada del blog os deje un enlace para que lo pudierais descargar e instalar.

- En este capítulo conectamos nuestra página de alta de usuario a nuestra base de datos SQL via procedimientos almacenado. Para ello necesitamos establecer una cadena de conexión, que podemos inicializar en el web.config, que es el archivo principal de opciones de configuración para una aplicación web hecha en asp.net. El archivo es un documento que define información de configuración concerniente a la aplicación web. El archivo web.config contiene información que controla la carga de módulos, configuraciones de seguridad, configuraciones del estado de la sesión, opciones de compilación y el lenguaje de la aplicación. Los archivos web.config pueden contener también objetos específicos tales como cadenas de conexión.En nuestro caso la cadena de conexión va con autenticación windows  en vez de con usuario y password :

  <connectionStrings>
    <add name="EmpresaConnectionString" connectionString="Data Source=LAPTOP-C3OQ67NM\SQLEXPRESS;Initial Catalog=Empresa;Integrated Security=True"
      providerName="System.Data.SqlClient" />
  </connectionStrings>




- Una vez que tenemos inicializada la cadena de conexión, la utilizamos para cargar el combo con los paises via procedimiento almacenado  y para guardar los datos de un usuario que utilice el formulario de alta. Los procedimientos almacenados que llamamos desde el código son los siguientes:

  • El procedimiento que nos devuelve los paises es el siguiente: 
ALTER PROCEDURE [dbo].[DamePaises]
   
AS
BEGIN

    SET NOCOUNT ON;
   
    SELECT Pais,CodPais FROM Paises order by 2 asc

END


  •  El procedimiento almacenado que se encarga de guardar el usuario es este:
ALTER PROCEDURE [dbo].[AltaUsuario]
    @nombre varchar(255),
    @email varchar(255),
    @pass varbinary(MAX)=NULL,
    @codPais varchar(3)
AS
BEGIN

    SET NOCOUNT ON;

    DECLARE @idpais int

    SELECT @idpais=idPais FROM Paises WHERE CodPais = @codPais

    INSERT INTO dbo.Usuarios(Nombre,Email,Pass,IdPais) VALUES
   (@nombre,@email,@pass,@idpais)

END 


- Una vez que tenenos definidos los procedimientos almacenados que vamos a utlizar ya los podemos llamar desde nuestra aplicación cliente.Os dejo el código de la aplicación:

  •  Código de la página de AltaUsuario.aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="AltaUsuario.aspx.cs" Inherits="GestionVarios.AltaUsuario" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
</head>
<body>
    <form id="form1" runat="server">

        <table width="700px" border="0" cellpadding="0" cellspacing="0" align="center">
            <tr>
                <td width="700px" style="height: 40px; vertical-align: middle;" colspan="2" align="left">
                    <h1>Datos de acceso</h1>
                <br />
                </td>
            </tr>

            <tr>
                 <td width="250px" height="22px" align="left" style="vertical-align: top">Nombre usuario:</td>
                 <td width="450px" align="left" style="vertical-align: top">
                    <asp:TextBox ID="txtnombre" runat="server" Width="300px"  ForeColor="Black" ></asp:TextBox>
                    <asp:RequiredFieldValidator ID="reqNombre" runat="server" ControlToValidate="txtnombre" ErrorMessage="*" Display="Dynamic" ForeColor="Red"  ></asp:RequiredFieldValidator><br />
                 </td>

            </tr>
                 <tr>
                 <td width="250px" height="22px" align="left" style="vertical-align: top">Pais:</td>
                 <td width="450px" align="left" style="vertical-align: top">
                    <asp:DropDownList runat="server" id="cmbPaises" AppendDataBoundItems="True" Width="311px" DataSourceID="SqlDataSource1" DataTextField="Pais" DataValueField="CodPais">
                        <asp:ListItem Text="Seleccione un pais" Value="-1">-SELECCIONAR-</asp:ListItem>
                            <asp:ListItem Text="España" Value="1"></asp:ListItem>
                            <asp:ListItem Text="Portugal" Value="2"></asp:ListItem>
                            <asp:ListItem Text="Francia" Value="3"></asp:ListItem>
                            <asp:ListItem Text="Italia" Value="4"></asp:ListItem>
                 </asp:DropDownList>
                     <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:EmpresaConnectionString %>" SelectCommand="DamePaises" SelectCommandType="StoredProcedure"></asp:SqlDataSource>
                <asp:RequiredFieldValidator id="reqPais"  ControlToValidate="cmbPaises" ErrorMessage="* Seleccione pais"   Display="Dynamic" InitialValue="-1" runat="server" ForeColor="Red" />
                 </td>

            </tr>
            <tr>
                <td width="250px" height="22px" align="left" style="vertical-align: top">Dirección de E-Mail:
                </td>
                <td width="450px" align="left" style="vertical-align: top">
                    <asp:TextBox ID="mtxtEMail" runat="server" Width="300px"  ForeColor="Black" ></asp:TextBox>
                    <asp:RequiredFieldValidator ID="mreqEMail" runat="server" ControlToValidate="mtxtEMail" ErrorMessage="*" Display="Dynamic" ForeColor="Red"  ></asp:RequiredFieldValidator><br />
                    <asp:RegularExpressionValidator ID="mregEMail" runat="server" ControlToValidate="mtxtEMail" ErrorMessage="La Dirección de E-Mail especificada no es válida.<br>" ValidationExpression="\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" Display="Dynamic"  ForeColor="Red"></asp:RegularExpressionValidator>
                </td>
            </tr>
            <tr>
                <td width="250px" height="22px" align="left" style="vertical-align: top">Contraseña:
                </td>
                <td width="450px" align="left" style="vertical-align: top">
                    <asp:TextBox ID="mtxtPassword" runat="server" Width="150px" MaxLength="20" TextMode="Password"></asp:TextBox>
                    <br />
                    <asp:RequiredFieldValidator ID="mreqPassword" runat="server" ControlToValidate="mtxtPassword" ErrorMessage="Debe especificar una contraseña de al menos 6 caracteres.<br>" Display="Dynamic" ForeColor="Red"></asp:RequiredFieldValidator>
                    <asp:RegularExpressionValidator ID="mregPassword" runat="server" ControlToValidate="mtxtPassword" ErrorMessage="La contraseña no es correcta (min. 6 cars)." ValidationExpression="\w+.{5,}" Display="Dynamic" ForeColor="Red"></asp:RegularExpressionValidator>
                </td>
            </tr>
            <tr>
                <td width="250px" height="22px" align="left" style="vertical-align: top">Confirmar Contraseña:
                </td>
                <td width="450px" align="left" style="vertical-align: top">
                    <asp:TextBox ID="mtxtPassword2" runat="server" Width="150px" MaxLength="20" TextMode="Password"  ></asp:TextBox>
                   <br />
                    <asp:RequiredFieldValidator ID="mreqPassword2" runat="server" ControlToValidate="mtxtPassword2" ErrorMessage="Debe confirmar la contraseña.<br>" Display="Dynamic" ForeColor="Red"></asp:RequiredFieldValidator>
                    <asp:CompareValidator ID="mcomPasswords" runat="server" ErrorMessage="Las contraseñas no son iguales." Display="Dynamic" ControlToCompare="mtxtPassword" ControlToValidate="mtxtPassword2" ForeColor="Red"></asp:CompareValidator>
                </td>
            </tr>
               <tr>
                   <td>&nbsp;</td>
                <td width="250px" height="22px" align="left" style="vertical-align: top">
                    <asp:CheckBox ID="chkCondiciones" runat="server"/><asp:HyperLink ID="linkCondiciones" runat="server" Text="Condiciones servicio" NavigateUrl="~/CondicionesServicio.aspx"></asp:HyperLink><br />
                </td>
                </tr>     
            <tr>
                <td width="700px" style="height: 40px; vertical-align: middle;" colspan="2" align="center" colspan="2">
                    <asp:Button ID="mbtnRegistrar" runat="server" Text="ALTA" OnClick="mbtnRegistrar_Click" />
                       <asp:Label runat="server" ID="lblError" Visible="false" ForeColor="Red"></asp:Label>
                </td>
            </tr>
          
        </table>
    </form>
</body>
</html>


  • Cdigo del fichero cs asociado: ´
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace GestionVarios
{
    public partial class AltaUsuario : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void mbtnRegistrar_Click(object sender, EventArgs e)
        {
            lblError.Visible = true;
            if (chkCondiciones.Checked == false)
            {
              
                lblError.Text = "Debes aceptar los términos y condiciones del servicio.";
            }
            else
            {
                guardarUsuario();
                lblError.Text = "Usuario dado de alta correctamente";
                lblError.ForeColor = Color.Green;

            }
        }

        private void guardarUsuario()
        {
            SqlConnection conexion = new SqlConnection(ConfigurationManager.ConnectionStrings["EmpresaConnectionString"].ConnectionString);
            try
            {
                conexion.Open();
                SqlCommand com = conexion.CreateCommand();
                com.CommandType = System.Data.CommandType.StoredProcedure;
                com.CommandText = "dbo.AltaUsuario";
                com.Parameters.Add("@nombre",SqlDbType.VarChar,255).Value=txtnombre.Text;
                com.Parameters.Add("@email", SqlDbType.VarChar, 255).Value = mtxtEMail.Text;
                // com.Parameters.Add("@pass", SqlDbType.VarBinary, 8000).Value = mtxtEMail.Text;
                com.Parameters.Add("@codPais", SqlDbType.VarChar, 3).Value = cmbPaises.SelectedValue;

                com.ExecuteNonQuery();

            
            }
            catch (Exception ex)
            {
                lblError.Text = "Se produjo un error guardando el usuario:" + ex.Message;
            }
            finally
            {
                if (conexion != null && conexion.State == System.Data.ConnectionState.Open)
                    conexion.Close();

                conexion.Dispose();
            }
        }
    }
}



 





No hay comentarios:

Publicar un comentario

Curso .NET Core en C# - 34.Creamos nuestro propio log

34.Creamos nuestro propio log Hola a todos. En este curso, analizaremos todos los conceptos básicos, intermedios y avanzados de  ASP.NET...