Ir al contenido principal

Crear Web API en ASP.NET con ADO.Net usando VS 2019 Método Put - Fase IV

Hola nuevamente, continuamos con la implementación de Web API con ADO.Net, en esta fase revisaremos e implementaremos el método PUT con el fin de actualizar los registros ya insertados en la base de datos, recordar que se viene haciendo uso de las base CRUD - Base de Datos con Microsoft SQL Server 2019 donde se crearon todos los procedimientos almacenados en relación a este serie de articulo que se viene revisando que tiene relación a la base de datos BD_TEST.

Como ya es conocido el método PUT se utiliza para actualizar por completo un registro existente ingresado con anterioridad a una base de datos, es decir, es parecido a realizar un UPDATE directamente en la base de datos con la diferencia que este caso es el cliente quien especifica el URI del recurso que es enviado en el cuerpo de la solicitud que contiene una representación completa del recurso.

Al igual que el método PUT existe el método PATCH que realiza la misma acción de actualizar, con la diferencia que actualiza sólo la información que se le envía.

Lo que veremos en este articulo:

  • Requisitos.
  • Paso 1: Implementar el método UpdateUsers en el proyecto Data.Access.
  • Paso 2: Invocar el método UpdateUsers en el proyecto WebApi.Data.Business
  • Paso 3: Invocar el método UpdateUsers en el proyecto WebApi.Domain.
  • Paso 4: Implementar el método PUT en el proyecto WebApi.
  • Paso 5: Testear el método PUT desde Postman.
  • Conclusión:

Requisitos:

  1. Microsoft Visual Studio Community 2019
  2. .Net Framework 4.6
  3. ADO.Net (tecnología para la conexión a datos)
  4. Microsoft SQL Server 2019 Express
  5. T-SQL (Lenguaje transaccional para SQL)
  6. Postman

Paso 1: Implementar el método UpdateUsers en el proyecto Data.Access:

Recordemos que la Fase II y III ya se agregaron las referencias System.ConfigurationSystem.Data y System.Data.Cliente e importamos las 3 referencia desde en la clase UsuarioDAL.cs con el fin de acceder a la base de datos y realizar la actualiza a través de procedimiento alamacenado implementado en el articulo del CRUD con SQL Server 2019; seguidamente implementamos el método UpdateUsers con el fin de invocar en todas las capas de nuestra solución y finalmente invocar e implementar el método POST están en el proyecto WebApi.

Recordemos que debes tener las mis consideraciones de hacer uso del ConnectionStringsSection, SqlCommand, SqlConnection y finalmente ejecutar el comando ExecuteNonQuery para lograr la actualización de los registros.

Para logra la actualización pasamos 2 parámetros de entrada:

  1. Uno de ellos es el  ID en referencia al tipo dato autogenerado como fin de hacer el match en la base de datos.
  2. Seguidamente pasamos el modelo usuario "usuarioModel" con el fin de actualizar los datos.

using System;

using System.Collections.Generic;

 

//Importar para acceder al poryecto Models y directio Usuario

using ArquitecturaWebApi.Models.Usuario;

 

using System.Configuration;

using System.Data.SqlClient;

using System.Data;

 

namespace ArquitecturaWebApi.Data.Access.DAL

{

    public class UsuarioDAL

    {

        public static int UpdateUsers(int id, UsuarioModel usuarioModel)//Como parámetro de entrada enviamos el id y la lista de modelo UsuarioModel

        {//Acceder al archivo de configuración para ller la cadena de conexión

            string cs = ConfigurationManager.ConnectionStrings["CnBD"].ConnectionString;

 

            int result;

            using (SqlConnection con = new SqlConnection(cs))//Inicio la conexión a la base de datos

            {

                con.Open();//Abrimos la conexión a la base de datos

                SqlCommand com = new SqlCommand("SP_ACTUALIZAR_USUARIO", con);//Definimos el procedimiento a ejecutar

                com.CommandType = CommandType.StoredProcedure;//Comando de tipo procedimiento almacenado

 

                //Agregamos y hacemos match los parametros definidos

                com.Parameters.Add("@usuario", SqlDbType.VarChar, 50).Value = usuarioModel.usuario;

                com.Parameters.Add("@contrasena", SqlDbType.VarChar, 50).Value = usuarioModel.contrasena;

                com.Parameters.Add("@intentos", SqlDbType.Int, 5).Value = usuarioModel.intentos;

                com.Parameters.Add(new SqlParameter("@nivelSeg", SqlDbType.Decimal)

                {

                    Precision = 18,

                    Scale = 0

                }).Value = usuarioModel.nivelSeg;

                com.Parameters.Add("@id", SqlDbType.Int, 5).Value = id;

 

                result = com.ExecuteNonQuery();//Ejecuto y comando y actulizo los datos

            }

            return result;// Captura la lista de la identidad

        }

    }

}

Paso 2: Invocar el método UpdateUsers en el proyecto WebApi.Data.Business:

Ahora invocamos el método UpdateUsers(int id, UsuarioModel usuarioModel) que acabamos de implementar en el proyecto Data.Acces.

sing System;

using System.Collections.Generic;

//Importar los poryectos Models y Data.Access, para acceder al directorio Usuario y DAL

using ArquitecturaWebApi.Models.Usuario;

using ArquitecturaWebApi.Data.Access.DAL;

 

namespace ArquitecturaWebApi.Data.Business

{

    public class Usuario

    {       

        public static int UpdateUsers(int id, UsuarioModel usuarioModel)

        {

            try

            {

                return UsuarioDAL.UpdateUsers(id, usuarioModel);

            }

            catch (Exception ex)

            {

                throw new Exception(ex.Message);

            }

        }

    }

}

Paso 3: Invocar el método UpdateUsers en el proyecto WebApi.Domain:

Seguidamente invocamos el método UpdateUsers(int id, UsuarioModel usuarioModel) que acabamos de implementar en el proyecto Data.Business.

using System;

using System.Collections.Generic;

//Importar para acceder al proyecto Models y directorio Usuario, adempas importar el proyecto Data.Business

using ArquitecturaWebApi.Models.Usuario;

using ArquitecturaWebApi.Data.Business;

 

namespace ArquitecturaWebApi.Domain

{

    public class UsuarioDomain

    {

        public int UpdateUsers(int id, UsuarioModel usuarioModel)

        {

            try

            {

                return Usuario.UpdateUsers(id, usuarioModel);

            }

            catch (Exception ex)

            {

                throw new Exception(ex.Message);

            }

        }

    }

}

Paso 4: Implementar el método PUT en el proyecto WebApi:

La implementación de este método PUT se logrará en base a la invocación al método UpdateUsers. Recordemos que ya se agregaron las referencias e importardas (desde el code behind) los proyectos de ArquitecturaWebApi.Models y ArquitecturaWebApi.Domain.

        /// <summary>

        /// Método PUT con el fin de actualizar los datos

        /// </summary>

        /// <param name="id"></param>

        /// <param name="usuarioModel"></param>

        /// <returns></returns>

        public HttpResponseMessage Put(int id, [FromBody]UsuarioModel usuarioModel)

        {

            HttpResponseMessage httpMsg = null;

            try

            {

                UsuarioModel usuario = new UsuarioModel();

                usuario.usuario = usuarioModel.usuario;

                usuario.contrasena = usuarioModel.contrasena;

                usuario.intentos = usuarioModel.intentos;

                usuario.nivelSeg = usuarioModel.nivelSeg;

                usuario.id = id; 

                usuarioDomain.UpdateUsers(id, usuario);//Invocamos el proceso actualizar en base los parametros ID y el modelo usuarioModel

 

                httpMsg = Request.CreateResponse(HttpStatusCode.OK, usuario);//Capturamos la respuesta de la petición del proceso realizado

                return httpMsg;

            }

            catch (Exception ex)

            {

                httpMsg = Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message);

            } 

            return httpMsg;

        }

Paso 6: Testear el método PUT desde Postman:

Antes de ejecutar el método PUT validamos los datos actuales que se encuentra almacenado en la base datos (con e fin de tener nuestro evidencia antes de actualizar los datos).

Se actualizará el registro ID = 7

Seguidamente ejecutamos la WebApi desde el Visual Studio, abrimos el SQL Server Management Studio con el fin de validar los datos a actualizar, se realizará las siguientes acciones en Postman (las mismas acciones realizadas en la Fase II, con la salvedad del punto 6 que se debe cambiar los valores):

  1. Seleccionamos el tipo de método POST.
  2. Ingresamos la url https://localhost:44336/api/Usuario/7
  3. Clic en Body
  4. Marcamos raw
  5. Seleccionamos JSON (application/json)
  6. Finalmente ingresamos los datos a ingresar en formato JSON.
Comparamos los datos actualizar vs la primera evidencia capturado.

Conclusión:

Ahora bien con todo lo visto podemos decir que el métodos PUT hacen referencia a la acción de actualizar (Update) los registro de una base de datos, es decir de cara a la interfaz no existe ninguna variación del como se invoca y procesa los datos, sin embargo la forma de implementar con ADO.Net te brinda mayor versatilidad a los cambios que pueda realizar a futuro.

Nuevamente éxitos y bendiciones para todos 😊; y mil gracias por la acogida de este nuevo articulo; déjanos sus comentarios y apreciaciones acerca del articulo y un fuerte abrazo para todos ✌...!!!

Comentarios

Entradas más populares de este blog

Habilitar Usuario HR Oracle

Al realizar la primera instalación del Oracle, el usuario HR por defecto está bloqueado y por ende no podemos loguearnos como dicho usuario, lo que debe hacer son los siguiente pasos, aplicables para Linux o Windows.
1. Conectarse como usuario system o sysdba + contraseña haciendo uso del comando connect.
Usuario: system
Password: xxxx 


2. Hacer uso  del comando alter user hr account unlock desbloqueamos la cuenta.
alter user hr account unlock;

3. Escribimos el comando alter user HR identified by hr; con esto estamos diciendo que la contraseña será hr.

alter user HR identified by hr;

4. Ahora testeamos la conexión con el comando - conn hr/hr@xe. Si deseas después de conectarnos se puede realizar un select a la tabla employees del hr.


Resultado del select realizado
5. Con todos estos pasos realizados ya podemos logearnos desde cualquier IDE como el usuario hr  y la contraseña hr que definimos en el paso 3. 
Para finalizar nos loguearemos con el IDE Oracle SQL Developer.

Espero les sea de utilidad,…

Usuario SYS y SYSTEM - ORACLE

Usuario SYS y SYSTEM
Ambos usuario son creados de forma automática al crear la base de datos ORACLE y se otorga el rol de DBA.

SYS (password por defecto: CHANGE_ON_INSTALL).
SYSTEM (password por defecto: MANAGER).

Lo que se recomienda es cambiar el password de ambos usuarios por el tema de seguridad.

SYS:
Todas las tablas y vistas para el diccionario de datos de la base de datos están almacenados en el esquema SYS. Estas tablas y vistas son críticas para el funcionamiento de la base de datos ORACLE. Para mantener la integridad del diccionario de datos, las tablas del esquema SYS son manipulados solo por la base de datos. Nunca se debería modificar algo o crear tablas en el esquema del usuario SYS.

SYSTEM:
El usuario SYSTEM se utiliza para crear tablas y vistas adicionales que muestran información administrativa, tablas internas y vistas utilizado por varias opciones y herramientas de la base de datos ORACLE. No se recomienda utilizar el esquema SYSTEM para almacenar tablas de interés para usu…

Parámetro de entrada y salida – PL/SQL

Parámetro de entrada y salida – PL/SQL:
Los parámetros de entrada y salida no son los parámetros de inicialización de la base de datos ORACLE. Los parámetros de entra y salida son utilizados mayormente en implementaciones de funciones, procedimientos almacenados o bloques de código bajo el lenguaje del PL/SQL, se considera que ambos parámetros (entra y salida) puedan realizar operaciones en el mismo bloque PL/SQL, es decir, si enviamos un parámetro de entrada hará que cumpla cierta operación y retornara los valores de salida de dicha operación procesada de acuerdo al parámetro de ingresado. Es de acuerdo al caso que nos presenta en la implementación.
Algo importante al definir los parámetros, es saber y considerar cuántos tipos de parámetro existe si solo hablamos de entrada y salida, en realidad mi determinación seria 3 tipos:

Parámetros:

IN – entrada
OUT – salida
IN OUT – entrada salida

Parámetro IN – entrada:
El comportamiento común de estés tipos de parámetros es estar siempre pendiente d…