<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Darwing  Castellanos</title>
    <description>The latest articles on DEV Community by Darwing  Castellanos (@darwing99).</description>
    <link>https://dev.to/darwing99</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F934918%2F15be54f3-760d-499d-b1e7-fa0ab335cf7f.jpeg</url>
      <title>DEV Community: Darwing  Castellanos</title>
      <link>https://dev.to/darwing99</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/darwing99"/>
    <language>en</language>
    <item>
      <title>BASE DE DATOS SQL SERVER EN MODO SUSPECT</title>
      <dc:creator>Darwing  Castellanos</dc:creator>
      <pubDate>Sat, 13 Jan 2024 02:03:00 +0000</pubDate>
      <link>https://dev.to/darwing99/base-de-datos-sql-server-en-modo-suspect-82f</link>
      <guid>https://dev.to/darwing99/base-de-datos-sql-server-en-modo-suspect-82f</guid>
      <description>&lt;p&gt;&lt;strong&gt;Cómo Solucionarlo?&lt;/strong&gt;&lt;br&gt;
Ejecute el siguiente código TSQL para poner la base de datos en modo de emergencia :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;EXEC sp_resetstatus NameDatabase;
go
Alter Database NameDatabase set emergency;
go
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ejecute el comando DBCC CHECKDB . Esto verificará la integridad lógica y física de todos los objetos dentro de la base de datos especificada.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DBCC CHECKDB(NameDatabase);
go
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ejecute el siguiente código TSQL para obtener la base de datos en modo Single_user :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ALTER DATABASE NameDatabase SET SINGLE_USER WitH
rollback immediate;
go
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ejecute el siguiente código para reparar la base de datos:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dbcc checkdb(NameDatabase,repair_allow_data_loss);
go
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Finalmente, ejecute el comando TSQL para permitir el acceso multiusuario a la base de datos:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ALTER DATABASE NameDatabase set multi_user;
go
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>Como instalar prestashop en Debian 11.</title>
      <dc:creator>Darwing  Castellanos</dc:creator>
      <pubDate>Tue, 03 Oct 2023 05:20:46 +0000</pubDate>
      <link>https://dev.to/darwing99/como-instalar-prestashop-en-debian-11-4iad</link>
      <guid>https://dev.to/darwing99/como-instalar-prestashop-en-debian-11-4iad</guid>
      <description>&lt;p&gt;En esta ocasión explicaremos cómo instalar PrestaShop en Debian 11 Bullseye paso a paso, de tal forma que puedas montar tu propio comercio electrónico sobre tu servidor o VPS Debian con esta conocida plataforma de e-commerce.&lt;/p&gt;

&lt;p&gt;Si quieres seguir los pasos de esta guía de instalación de PrestaShop en Debian 11 Bullseye deberías partir del siguiente escenario:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Una máquina Debian 11 Bullseye actualizada.&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;La pila LAMP (servicio web con PHP y bases de datos MariaDB/MySQL).&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;Acceso seguro mediante SSL al servicio web.&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;Un usuario con permisos de sudo.&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;Conexión a Internet.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;También necesitaremos alguna herramienta procedente de los repositorios de Debian 11, así que los actualizamos:&lt;br&gt;
&lt;code&gt;sudo apt update&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;E instalamos el paquete necesario:&lt;br&gt;
&lt;code&gt;sudo apt install -y unzip&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Vamos a descargar PrestaShop para Debian 11 Bullseye directamente desde la sección de descargas del sitio oficial, ya que los repositorios de la distribución no ofrecen paquetes para esta aplicación:&lt;br&gt;
&lt;code&gt;wget https://download.prestashop.com/download/releases/prestashop_1.7.8.0.zip&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Descomprimimos el paquete que acabamos de descargar en una ubicación adecuada:&lt;br&gt;
&lt;code&gt;sudo unzip prestashop_1.7.8.0.zip -d /var/www/prestashop&lt;/code&gt;&lt;br&gt;
Como PrestaShop necesita escribir en su propio directorio de instalación, concedemos la propiedad del mismo al usuario con el que corre el servicio web:&lt;br&gt;
&lt;code&gt;sudo chown -R www-data: /var/www/prestashop/&lt;/code&gt;&lt;br&gt;
PrestaShop puede hacer uso de funcionalidades incluidas en el módulo Rewrite de Apache, pero este módulo no se encuentra activado por defecto en Debian 11, así que lo activamos:&lt;br&gt;
&lt;code&gt;sudo a2enmod rewrite&lt;/code&gt;&lt;br&gt;
También crearemos un archivo de configuración del servicio web para PrestaShop:&lt;br&gt;
&lt;code&gt;sudo nano /etc/apache2/sites-available/prestashop.conf&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Con un contenido similar al siguiente:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Alias /shop /var/www/prestashop
&amp;lt;Directory /var/www/prestashop&amp;gt;
        AllowOverride all
&amp;lt;/Directory&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;En primer lugar definimos el alias /shop para hacer navegable la aplicación (puedes usar otro alias, como /tienda o cualquier otro que se te ocurra).&lt;/p&gt;

&lt;p&gt;Después activamos las configuraciones personalizadas en archivos .htaccess en el directorio de instalación de PrestaShop, ya que el uso de estos archivos también está desactivado por defecto.&lt;/p&gt;

&lt;p&gt;Una vez guardado el archivo, activamos esta nueva configuración:&lt;br&gt;
&lt;code&gt;sudo a2ensite prestashop.conf&lt;/code&gt;&lt;br&gt;
Y reiniciamos el servicio web:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo systemctl restart apache2&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;PrestaShop necesita algunas extensiones de este lenguaje que instalamos desde los repositorios del sistema.&lt;/p&gt;

&lt;p&gt;En el caso de usar la versión de PHP incluida en Debian 11 instalamos estos paquetes:&lt;br&gt;
&lt;code&gt;sudo apt install -y php-curl php-gd php-intl php-mbstring php-xml php-zip&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Y si usamos una versión del repositorio alternativo, tendremos que indicarla en el nombre de los paquetes; por ejemplo, para la versión 8.0:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt install -y php8.0-curl php8.0-gd php8.0-intl php8.0-mbstring php8.0-xml php8.0-zip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Terminada la instalación, recargamos la configuración del servicio:&lt;br&gt;
&lt;code&gt;sudo systemctl reload apache2&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Prestashop necesita trabajar sobre una base de datos del servicio instalado en nuestra máquina Debian 11 Bullseye. Para prepararla, conectamos al servicio con el cliente de consola mysql y un usuario administrador:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;mysql -u root -p&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Creamos la base de datos:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;create database prestashop charset utf8mb4 collate utf8mb4_unicode_ci;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Creamos el usuario: &lt;br&gt;
&lt;code&gt;create user prestashop@localhost identified by 'XXXXXXXX';&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Concedemos los permisos correspondientes al usuario:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;grant all privileges on prestashop.* to prestashop@localhost;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Refrescamos la tabla de permisos:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;flush privileges;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Y cerramos la conexión:&lt;br&gt;
&lt;code&gt;exit&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Luego configuramos desde la web y despues de instalar todo borramos el instalador:&lt;br&gt;
&lt;code&gt;sudo rm -rf /var/www/prestashop/install/&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Bibliografia:&lt;a href="https://chachocool.com/como-instalar-prestashop-en-debian-11-bullseye/"&gt; https://chachocool.com/como-instalar-prestashop-en-debian-11-bullseye/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>cms</category>
    </item>
    <item>
      <title>Ley de Moore</title>
      <dc:creator>Darwing  Castellanos</dc:creator>
      <pubDate>Thu, 21 Sep 2023 20:12:20 +0000</pubDate>
      <link>https://dev.to/darwing99/ley-de-moore-3go7</link>
      <guid>https://dev.to/darwing99/ley-de-moore-3go7</guid>
      <description>&lt;p&gt;La "Ley de Moore" es una observación empírica que fue formulada por Gordon Moore, uno de los cofundadores de Intel Corporation, en 1965. Esta ley predice que la cantidad de transistores que pueden ser integrados en un microprocesador se duplicará aproximadamente cada dos años, lo que conduce a un aumento exponencial en la capacidad de procesamiento y memoria de los circuitos integrados.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--t3O0XrGh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7jj8w7bkpur07yl4lehr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--t3O0XrGh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7jj8w7bkpur07yl4lehr.png" alt="Image description" width="800" height="556"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;En términos simples, la Ley de Moore implica que, con el tiempo, los microchips se volverán más pequeños y potentes, lo que permitirá mejoras significativas en la velocidad y el rendimiento de los dispositivos electrónicos, como computadoras, teléfonos móviles y otros dispositivos electrónicos.&lt;/p&gt;

&lt;p&gt;Es importante destacar que la Ley de Moore es una observación empírica basada en tendencias históricas y no una ley física fundamental de la naturaleza. Aunque ha sido válida durante varias décadas, se espera que en algún momento se alcance un límite físico en cuanto a la miniaturización de los transistores y la capacidad de procesamiento, lo que podría llevar a una desaceleración en el cumplimiento de esta ley.&lt;/p&gt;

&lt;p&gt;Hasta mi última actualización en septiembre de 2021, la Ley de Moore había sido ampliamente observada, pero ya se habían observado signos de desaceleración debido a los desafíos técnicos cada vez mayores asociados con la miniaturización de los componentes electrónicos. Por lo tanto, es importante tener en cuenta que esta ley podría no mantenerse de manera indefinida en el futuro.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://es.wikipedia.org/wiki/Ley_de_Moore" class="ltag_cta ltag_cta--branded"&gt;WIKIPEDIA&lt;/a&gt;
&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Conexión C# con Mysql</title>
      <dc:creator>Darwing  Castellanos</dc:creator>
      <pubDate>Wed, 23 Aug 2023 20:35:41 +0000</pubDate>
      <link>https://dev.to/darwing99/coneccion-c-con-mysql-dh5</link>
      <guid>https://dev.to/darwing99/coneccion-c-con-mysql-dh5</guid>
      <description>&lt;p&gt;Para realizar la conexión con una base de datos MySQL desde .NET hay que realizar lo siguiente (siguiendo una sintaxis de C#):&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hay que hacer referencia a:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;using MySql.Data.MySqlClient;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conectarse a MySQL con .NET&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;string connectionString = "Server=127.0.0.1;Port=3306;Database=personal;Uid=root;password=test;";
MySqlConnection conexion = new MySqlConnection(connectionString);



&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Abrir la conexión con la base de datos&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;conexion.Open();


MySqlCommand cmd = new MySqlCommand();
cmd.Connection = conexion;
cmd.CommandText = "select/insert/update aqui";
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Consultar información de la base de datos con .NET (select)&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;MySqlCommand cmd = new MySqlCommand();
cmd.Connection = conexion;
cmd.CommandText = $"select * from Articulo where id = ?articuloId";
cmd.Parameters.Add("?articuloId", MySqlDbType.Int32).Value = articuloId;
Articulo articulo = new Articulo();
using (var reader = cmd.ExecuteReader())
{
    while (reader.Read())
    {
        articulo.Id = Convert.ToInt32(reader["id"]);
        articulo.Titulo = reader["Titulo"].ToString();
    }
}
return articulo;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Insertar valores en una base de datos con .NET (insert)&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;using (MySqlConnection conexion = new MySqlConnection(connectionString))
{
    conexion.Open();

    MySqlCommand cmd = new MySqlCommand();
    cmd.Connection = conexion;
    cmd.CommandText = "INSERT INTO `ejemplo-conexion`.`Articulo` (`Titulo`, `Contenido`, `AutorId`, `Fecha`) VALUES (?titulo, ?contenido, ?autorid, ?fecha);";

    cmd.Parameters.Add("?titulo", MySqlDbType.VarChar).Value = $"nuevo titulo";
    cmd.Parameters.Add("?contenido", MySqlDbType.VarChar).Value = $"nuevo contenido";
    cmd.Parameters.Add("?AutorId", MySqlDbType.Int32).Value = 1;
    cmd.Parameters.Add("?fecha", MySqlDbType.DateTime).Value = DateTime.Now;

    cmd.ExecuteNonQuery();
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;recoger el ID insertado&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cmd.ExecuteNonQuery();
var ultimoId = cmd.LastInsertedId;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Actualizar valores de una base de datos con .NET (update)&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;using (MySqlConnection conexion = new MySqlConnection(connectionString))
{
    conexion.Open();

    MySqlCommand cmd = new MySqlCommand();
    cmd.Connection = conexion;
    cmd.CommandText = "update `ejemplo-conexion`.`Articulo` SET `Titulo` = ?titulo where ID = ?id;";

    cmd.Parameters.Add("?titulo", MySqlDbType.VarChar).Value = $"titulo actualizado";
    cmd.Parameters.Add("?id", MySqlDbType.Int32).Value = 3;

    cmd.ExecuteNonQuery();
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>Desarrollo de usuario final</title>
      <dc:creator>Darwing  Castellanos</dc:creator>
      <pubDate>Sat, 18 Feb 2023 17:51:22 +0000</pubDate>
      <link>https://dev.to/darwing99/desarrollo-de-usuario-final-2ael</link>
      <guid>https://dev.to/darwing99/desarrollo-de-usuario-final-2ael</guid>
      <description>&lt;p&gt;El desarrollo del usuario final es cuando el usuario final de un programa de software es responsable de desarrollar nuevas aplicaciones o activos dentro de ese programa. Esto es lo opuesto al desarrollo de software más básico, donde la empresa responsable de crear un programa es también la que desarrolla todas las aplicaciones y activos para él. Las principales ventajas de dicho desarrollo incluyen el hecho de que puede hacer que el tiempo de desarrollo sea más rápido y que los usuarios pueden terminar sintiéndose más comprometidos con el software. El desarrollo del usuario final se ha utilizado en varios programas diferentes, incluidos juegos de computadora, programas de ilustración y software de modelado científico.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--R6ywdq7_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wdhhh9tku6cnqrw3pfg5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--R6ywdq7_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wdhhh9tku6cnqrw3pfg5.png" alt="Image description" width="470" height="320"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;La principal diferencia entre el desarrollo del usuario final y el desarrollo regular de software es la forma en que un usuario utiliza el software. El desarrollo estándar generalmente involucra solo a los diseñadores y desarrolladores de software que crean nuevas aplicaciones y usos del software, que luego se proporcionan a los usuarios. Sin embargo, a través del desarrollo del usuario final, un programa puede seguir creciendo después de su lanzamiento, ya que los usuarios crean nuevas aplicaciones dentro del software o utilizan el programa para crear nuevos activos. Esto permite a un desarrollador de software lanzar un programa completo, pero que no está destinado a satisfacer las necesidades de todos los posibles usuarios, ya que los propios usuarios tienen la capacidad de hacer que el software satisfaga sus necesidades.&lt;/p&gt;

&lt;p&gt;Al utilizar el desarrollo del usuario final, una empresa de software también puede permitir que los usuarios se sientan más involucrados personalmente en la creación de nuevo contenido. Esto no siempre es cierto para todos los usuarios, ya que es probable que algunas personas utilicen el software y el contenido desarrollado por otros, pero no se involucren en el desarrollo por sí mismos. Sin embargo, es probable que un programa de este tipo sea más personalizable y pueda generar una base de usuarios más grande, ya que las personas a menudo se vuelven leales al software que pueden manipular.&lt;/p&gt;

&lt;p&gt;El desarrollo del usuario final se ha implementado en varios programas de software para diversos usos y razones. Los juegos de computadora, por ejemplo, a menudo incluyen conjuntos de herramientas o kits de desarrollo que brindan a los jugadores muchas de las mismas herramientas utilizadas por los desarrolladores, lo que permite a los jugadores crear nuevos niveles, entornos, criaturas y experiencias para que los disfruten otros jugadores. Los programas de arte también pueden incluir características similares, lo que brinda a los usuarios la capacidad de crear nuevas herramientas para usar en el propio programa. El software de modelado científico puede utilizar el desarrollo de los usuarios finales para brindarles la capacidad de crear varios escenarios y guiones de diferentes comportamientos, lo que permite a los usuarios probar varias situaciones posibles y crear modelos virtuales realistas de eventos físicos.&lt;/p&gt;

&lt;p&gt;En general los sistemas desarrollados por el usuario final se pueden terminar con más rapidez que los desarrollados por medio del ciclo de vida convencional de los sistemas. El hecho de permitir que los usuarios especifiquen sus propias necesidades de negocios mejora la recopilación de requerimientos y con frecuencia da como resultado una mayor participación y satisfacción del usuario con el sistema.&lt;/p&gt;

&lt;p&gt;Usuarios primarios.&lt;/p&gt;

&lt;p&gt;son los que interactúa con el sistema. Ellos lo alimentan con datos (entradas) o reciben salidas, quizás por medio de una terminal. Los agentes de reservación de vuelos, por ejemplo, emplean las terminales para consultar el sistema y obtener información relacionada con pasajeros, vuelos y boletos.&lt;/p&gt;

&lt;p&gt;Usuarios indirectos.&lt;/p&gt;

&lt;p&gt;son aquellos que se benefician de los resultados o reportes generados por estos sistemas pero que no interactúa de manera directa con el hardware o software. Estos usuarios que utilizan el sistema, pueden ser los gerentes encargados de las funciones de la empresa (por ejemplo, los gerentes de mercadotecnia son los responsables de las aplicaciones de análisis de ventas que generan los reportes mensuales de la compañía en este ramo).&lt;/p&gt;

&lt;p&gt;Usuarios gerentes.&lt;/p&gt;

&lt;p&gt;tienen responsabilidades administrativas en los sistemas de aplicación. Mientras estas personas no utilicen los sistemas ya sea directa o indirectamente, no tendrán la autoridad para aprobar o no la inversión en el desarrollo de aplicaciones, además no tendrán la responsabilidad ante la organización de la efectividad de los sistemas. De lo anterior se desprende que esta categoría de usuarios es la que debe participar en los esfuerzos de desarrollo de sistemas mayores.&lt;/p&gt;

&lt;p&gt;Usuarios directivos.&lt;/p&gt;

&lt;p&gt;toman cada vez mayor responsabilidad en el desarrollo de sistemas de información. Las organizaciones bien dirigidas consideran el posible impacto y los beneficios de los sistemas de información cuando elaboran su estrategia competitiva.&lt;/p&gt;

&lt;p&gt;No todos los usuarios finales tienen la misma experiencia. Algunos nunca han usado una computadora mientras que otros interactúa cotidianamente con un sistema de información. Cada grupo debe ser capaz de utilizar el sistema con facilidad y de manera oportuna cuando sea necesario, aunque su empleo no forme parte de la rutina cotidiana. Al mismo tiempo, las características necesarias del sistema para satisfacer las necesidades del usuario ocasional (tales como la capacidad de proporcionar ayuda adicional) no deben interferir con el trabajo de los demás usuarios. El analista debe hacer un esfuerzo para equilibrar las características del sistema para éste se adecue a las necesidades de todos los usuarios.&lt;/p&gt;

&lt;p&gt;Ventajas&lt;/p&gt;

&lt;p&gt;Pueden desarrollar formas nuevas o mejoradas para realizar sus tareas sin involucrar directamente a profesionales de SI.&lt;/p&gt;

&lt;p&gt;La variedad de paquetes de Software para usuarios finales han hecho más fácil para muchos usuarios el desarrollo de sus propias soluciones basadas en el computador.&lt;/p&gt;

&lt;p&gt;Desventajas.&lt;/p&gt;

&lt;p&gt;El uso creciente de los sistemas de información, sin embargo, es un arma de dos filos que tienen beneficios y tiene riesgos. Dado que los sistemas de información desarrollados en forma inadecuada pueden entorpecer, e incluso dañar, las actividades de una organización, los directivos deben evaluar de manera constante los riesgos a los que se expone la empresa en caso de falla de los sistemas de información.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Paquetes de Software</title>
      <dc:creator>Darwing  Castellanos</dc:creator>
      <pubDate>Sat, 18 Feb 2023 17:48:15 +0000</pubDate>
      <link>https://dev.to/darwing99/paquetes-de-software-242k</link>
      <guid>https://dev.to/darwing99/paquetes-de-software-242k</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WiKpXsww--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i6n7fgtuh1ald7tendk3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WiKpXsww--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i6n7fgtuh1ald7tendk3.png" alt="Image description" width="880" height="577"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Un paquete de software es una serie de programa que se distribuyen conjuntamente. Algunas de las razones suelen ser que el funcionamiento de cada uno complementa a o requiere de otros, además de que sus objetivos están relacionados como estrategia de mercadotecnia.&lt;/p&gt;

&lt;p&gt;Muchos sistemas operativos modernos emplean sistemas de gestión de paquetes que permiten que el administrador del sistema instale o desinstale paquetes, sin que en ningún momento queden programas instalados que no funcionen por falta de otros incluidos en su paquete. El sistema de gestión de paquetes usualmente también se ocupa de mantener las dependencias entre paquetes: si un paquete se recuesta en otro, el sistema se encarga de instalar éste primero.&lt;/p&gt;

&lt;p&gt;También encontramos paquetes de software en la distribución comercial de TV, ya que se suelen ofertar paquetes de software; o bien por ofrecer un precio menor del que costaría cada programa por separado o bien porque sólo exista la oferta conjunta y única.&lt;/p&gt;

&lt;p&gt;Lista de los diferentes tipos de paquetes de software para computadora&lt;/p&gt;

&lt;p&gt;El software para computadora proporciona instrucciones a las partes físicas de la máquina para que los componentes sepan cómo operar y trabajar en conjunto. El software también se conoce como programas, aplicaciones, procedimientos y códigos de cómputo. El software se basa en criterios del hardware; lo que puede funcionar en un  tipo  de computadora no necesariamente funciona en otra. Algunos tipos de software se instalan cuando se fabrica una computadora y son críticos para que la máquina funcione. Otros software se pueden comprar por separado o descargados del Internet y agregarlos a la computadora en cualquier momento.&lt;/p&gt;

&lt;p&gt;Sistemas operativos&lt;/p&gt;

&lt;p&gt;El software más importante en una computadora de escritorio es el sistema operativo. Piensa en este software como el conductor detrás del volante de un auto. El software del sistema operativo manipula cómo la información se despliega en una computadora, sirve como rastreador de archivos y programas, verifica que los componentes tanto del hardware como del software funcionen en conjunto de forma eficiente y controla los periféricos, como las impresoras, reproductores de CD y los audífonos. Los sistemas operativos más utilizados incluyen Microsoft Windows, Mac OS X y Unix.&lt;/p&gt;

&lt;p&gt;Producción en la oficina&lt;br&gt;
Muchos negocios utilizan varios tipos de software de producción de oficina. El QuickBooks de Intuit rastrea facturas y gastos mientras que reconcilia los costos contra el presupuesto actual. El FileMaker Pro es una sistema de administración de bases de datos muy versátil que trabaja con Windows, Mac e Internet para rastrear información de los clientes y empleados. Muchas organizaciones compran un paquete que contiene todo lo que necesitan sus empleados para manejar un negocio eficiente. Tanto Microsoft como Apple ofrecen paquetes con software procesador de palabras, hojas de cálculo, bases de datos y para presentaciones. Para los negocios más pequeños, OpenOffice es un software gratuito y se puede descargar de Internet.&lt;/p&gt;

&lt;p&gt;Entretenimiento&lt;br&gt;
Muchos consumidores compran computadores de alto rendimiento con la intención de utilizarlas para el entretenimiento. Existe una amplia gama de juegos para computadora disponible para adultos mayores, adultos y niños. Los fabricantes de video juegos como Sony y Microsoft han entrado también al mercado ofreciendo la capacidad de conectar máquinas computadoras y de video para jugar con ellas o en contra de otros usuarios en línea. Los videos gratuitos o de pago por cada juego están disponibles a través de YouTube o puedes pagar una inscripción mínima mensual a Netflix y ver películas en línea.&lt;/p&gt;

&lt;p&gt;Protección&lt;br&gt;
La seguridad en las computadoras se ha convertido en un asunto de preocupación desde la invención de Internet. Es importante instalar software de seguridad para proteger al hardware y software en tu computadora de los hackers y los virus. Tu primer línea de defensa es el cortafuegos o "firewall" de tu computadora que se puede visualizar como una pared de ladrillo entre la Web y tu computadora. Debido a que los hackers viven para infectar tu computadora con virus, es importante comprar suficiente software para proteger tu máquina y actualizarla con frecuencia. Muchos fabricantes como McAfee, Norton y Kaspersky ofrecen protección anti-spyware por una tarifa anual. Este software de seguridad escanea archivos, memoria, CD y memorias extraibles.&lt;/p&gt;

&lt;p&gt;El software empaquetado, también denominado paquete de software, es un software que a menudo se usa en conjunto, realiza funciones similares o incluye características similares, y se agrupa como un conjunto de programas de software.&lt;/p&gt;

&lt;p&gt;Ejemplos de paquetes de software&lt;br&gt;
1) Microsoft Office 365&lt;/p&gt;

&lt;p&gt;El paquete de software de productividad de oficina incluye Word (procesador de textos), Outlook (correo electrónico), Excel (hoja de cálculo), Access (base de datos), OneNote (software para tomar notas) y PowerPoint (diapositivas de presentación). Office 365 es un servicio de suscripción basado en la nube que ofrece la suite por una tarifa mensual.&lt;/p&gt;

&lt;p&gt;2) Adobe Creative Suite o Cloud&lt;/p&gt;

&lt;p&gt;Un paquete de software que incluye aplicaciones de diseño y publicación digital, como Photoshop, InDesign, Dreamweaver, Illustrator, Acrobat Pro y otros programas de soporte. Adobe Creative Cloud es el servicio de suscripción basado en la nube que ofrece la suite por una tarifa mensual.&lt;/p&gt;

&lt;p&gt;3) Apache OpenOffice&lt;/p&gt;

&lt;p&gt;Paquete de software de productividad de código abierto que incluye Writer (procesador de textos), Calc (aplicación de hoja de cálculo), Impress (aplicación de diapositivas de presentación), Draw (aplicación de dibujo), Base (aplicación de base de datos) y Math (editor de fórmulas).&lt;/p&gt;

&lt;p&gt;4) iWork&lt;/p&gt;

&lt;p&gt;Paquete de software de productividad de oficina de Apple que incluye las aplicaciones Pages (procesador de textos), Keynote (diapositivas de presentación) y Numbers (hojas de cálculo). iWork para iCloud es la oferta basada en la nube de Apple del paquete de software.&lt;/p&gt;

&lt;p&gt;5) Google Docs&lt;/p&gt;

&lt;p&gt;Conjunto de aplicaciones de productividad de Google basado en la web que incluye Docs (procesador de textos), Hojas de cálculo (hojas de cálculo), Diapositivas (diapositivas de presentación) y Formularios. Los documentos creados se pueden guardar en Google Drive, su servicio de almacenamiento en la nube.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Prototipos de una aplicación</title>
      <dc:creator>Darwing  Castellanos</dc:creator>
      <pubDate>Sat, 18 Feb 2023 17:34:06 +0000</pubDate>
      <link>https://dev.to/darwing99/prototipos-de-una-aplicacion-5ffh</link>
      <guid>https://dev.to/darwing99/prototipos-de-una-aplicacion-5ffh</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6XNhFUF2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/urug383bosgjc6uvgkzq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6XNhFUF2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/urug383bosgjc6uvgkzq.png" alt="Image description" width="880" height="834"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Un prototipo es una versión inicial de un sistema de software que se usa para demostrar conceptos, tratar opciones de diseño y encontrar más sobre el problema y sus posibles soluciones. El rápido desarrollo iterativo del prototipo es esencial, de modo que se controlen los costos, y los interesados en el sistema experimenten por anticipado con el prototipo durante el proceso de software.&lt;br&gt;
 Un prototipo de software se usa en un proceso de desarrollo de software para contribuir a anticipar los cambios que se requieran:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;En el proceso de ingeniería de requerimientos, un prototipo ayuda con la selección y validación de requerimientos del sistema.&lt;/li&gt;
&lt;li&gt;En el proceso de diseño de sistemas, un prototipo sirve para buscar soluciones específicas de software y apoyar el diseño de interfaces del usuario. Los prototipos del sistema permiten a los usuarios ver qué tan bien el sistema apoya su trabajo. Pueden obtener nuevas ideas para requerimientos y descubrir áreas de fortalezas y debilidades en el software. Entonces, proponen nuevos requerimientos del sistema.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Más aún, conforme se desarrolla el prototipo, quizá se revelen errores y omisiones en los requerimientos propuestos. Una función descrita en una especificación puede parecer útil y bien definida. Sin embargo, cuando dicha función se combina con otras operaciones, los usuarios descubren frecuentemente que su visión inicial era incorrecta o estaba incompleta. Entonces, se modifica la especificación del sistema con la finalidad de reflejar su nueva comprensión de los requerimientos. &lt;br&gt;
 Mientras se elabora el sistema para la realización de experimentos de diseño, un prototipo del mismo sirve para comprobar la factibilidad de un diseño propuesto. Por ejemplo, puede crearse un prototipo del diseño de una base de datos y ponerse a prueba, con el objetivo de comprobar que soporta de forma eficiente el acceso de datos para las consultas más comunes del usuario. Asimismo, la creación de prototipos es una parte esencial del proceso de diseño de interfaz del usuario. Debido a la dinámica natural de las interfaces de usuario, las escripciones textuales y los diagramas no son suficientemente buenos para expresar los requerimientos de la interfaz del usuario. Por lo tanto, la creación rápida de prototipos con la participación del usuario final es la única forma sensible para desarrollar interfaces de usuario gráficas para sistemas de software.&lt;/p&gt;

&lt;p&gt;Los objetivos de la creación de prototipos deben ser más xplícitos desde el inicio del proceso. Esto tendría la finalidad de desarrollar un sistema para un prototipo de la interfaz del usuario, y diseñar un sistema que valide los requerimientos funcionales del sistema o desarrolle un sistema que demuestre a los administradores la factibilidad de la aplicación.&lt;br&gt;
El mismo prototipo no puede cumplir con todos los objetivos, ya que si éstos quedan sin especificar, los administradores o usuarios finales quizá malinterpreten la función del prototipo. En consecuencia, es posible que no obtengan los beneficios esperados del desarrollo del prototipo.&lt;br&gt;
La siguiente etapa del proceso consiste en decidir qué poner y, algo quizá más importante, qué dejar fuera del sistema de prototipo. Para reducir los costos de creación de prototipos y acelerar las fechas de entrega, es posible dejar cierta &lt;br&gt;
funcionalidad fuera del prototipo y, también, decidir hacer más flexible los requerimientos no funcionales, como el tiempo de respuesta y la utilización de memoria. El manejo y la gestión de errores pueden ignorarse, a menos que el objetivo del prototipo sea establecer una interfaz de usuario. Además, es posible reducir los estándares de fiabilidad y calidad del programa.&lt;br&gt;
 La etapa final del proceso es la evaluación del prototipo. Hay que tomar provisiones durante esta etapa para la capacitación del usuario y usar los objetivos del prototipo para derivar un plan de evaluación. Los usuarios requieren tiempo para sentirse cómodos con un nuevo sistema e integrarse a un patrón normal de uso. Una vez que utilizan el sistema de manera normal, descubren errores y omisiones en los requerimientos.&lt;br&gt;
 Un problema general con la creación de prototipos es que quizás el prototipo no se utilice necesariamente en la misma forma que el sistema final. El revisor del prototipo tal vez no sea un usuario típico del sistema. También, podría resultar insuficiente el tiempo de capacitación durante la evaluación del prototipo. Si el prototipo es lento, los evaluadores podrían ajustar su forma de trabajar y evitar aquellas características del sistema con tiempos de respuesta lentos. Cuando se da una mejor respuesta en el sistema final, se puede usar de forma diferente.&lt;br&gt;
 En ocasiones, los desarrolladores están presionados por los administradores para entregar prototipos desechables, sobre todo cuando existen demoras en la entrega de la versión final del software. Sin embargo, por lo general esto no es aconsejable:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Puede ser imposible corregir el prototipo para cubrir requerimientos no funcionales, como los requerimientos de rendimiento, seguridad, robustez y fiabilidad, ignorados durante el desarrollo del prototipo.&lt;/li&gt;
&lt;li&gt;El cambio rápido durante el desarrollo significa claramente que el prototipo no está documentado. La única especificación de diseño es el código del prototipo. Esto no es muy bueno para el mantenimiento a largo plazo.&lt;/li&gt;
&lt;li&gt;Probablemente los cambios realizados durante el desarrollo de prototipos degradarán la estructura del sistema, y este último será difícil y costoso de mantener.&lt;/li&gt;
&lt;li&gt;Por lo general, durante el desarrollo de prototipos se hacen más flexibles los estándares de calidad de la organización.
Los prototipos no tienen que ser ejecutables para ser útiles. Los modelos en papel de la interfaz de usuario del sistema (Rettig, 1994) pueden ser efectivos para ayudar a los usuarios a refinar un diseño de interfaz y trabajar a través de escenarios de uso. Su desarrollo es muy económico y suelen construirse en pocos días. Una extensión de esta técnica es un prototipo de Mago de Oz, donde sólo se desarrolle la interfaz del usuario.
Los usuarios interactúan con esta interfaz, pero sus solicitudes pasan a una persona que los interpreta y les devuelve la respuesta adecuada.&lt;/li&gt;
&lt;/ol&gt;

</description>
    </item>
    <item>
      <title>Ciclo de vida de un sistema</title>
      <dc:creator>Darwing  Castellanos</dc:creator>
      <pubDate>Sat, 18 Feb 2023 17:16:08 +0000</pubDate>
      <link>https://dev.to/darwing99/ciclo-de-vida-de-un-sistema-2kkj</link>
      <guid>https://dev.to/darwing99/ciclo-de-vida-de-un-sistema-2kkj</guid>
      <description>&lt;p&gt;El software como tal sigue un proceso de desarrollo en el cual se atravieza por diferentes faces que conformaran lo que conocemos como el ciclo de vida clasico.&lt;/p&gt;

&lt;p&gt;Este ciclo de vida clasico recibe diferentes nombres entre ellas «ciclo de vida basico», «modelo en cascada» o «modelo lineal secuencial», estos nombres nos dicen que se trata de un modelo de desarrollo de software en el que tenemos que seguir una serie de etapas ordenadas de forma sistematica con el fin de generar un software.&lt;/p&gt;

&lt;p&gt;Tipicamente estos modelos de desarrollo se enfocan a el software empresarial y la mayoria de los autores hacen referencia a aquel software que se desarrolla a la medida de la organización, pero esto no quiere decir que el resto del software no deba seguir las mismas etapas o faces, asi que por esta ocasión trataremos de hacerlo de caracter general.&lt;/p&gt;

&lt;p&gt;A continuación se puede apreciar un esquema con el ciclo de vida clasico de los sistemas:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BeBqZaOU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q6ycxke8d19sabgftfb9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BeBqZaOU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q6ycxke8d19sabgftfb9.png" alt="Image description" width="880" height="824"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;En este caso, quise mostrar el proceso desde el origen de todo el proceso, es decir, el origen del software, que como cualquier invencion u obra humana surge de una necesidad, oportunidad o problema.&lt;/p&gt;

&lt;p&gt;Sin importar cual sea el tipo de software del que hablemos, todos surgen de algunas de esas tres simples palabras, , si tengo la necesidad de eficientar el control de calificaciones o la necesidad de conseguir un buen lugar donde comer puedo desarrollar un software que cubra cualquiera de esas necesidades, ya sean propias o de un tercero, entonces estoy desarrollando para cubrir una necesidad;  si tengo el problema de que existen muchos faltantes en el almacen o que soy muy olvidadizo con los cumpleñaos puedo desarrollar un software que me ayude a controlar el inventario del almacen o me ayude a recordar las fechas de cumpleaños de las personas que conozco, entonces estoy desarrollando para solucionar un problema; y si en algun momento veo que no existe un software que cubra las necesidades de algun sector de la sociedad, puedo desarrollar un software que cubra esa necesidad, entonces estoy desarrollando porque he sabido detectar una buena oportunidad. Recordemos que todo problema o necesidad es una oportunidad.&lt;/p&gt;

&lt;p&gt;Bien una vez detectada la necesidad el problema o la necesidad podemos comenzar el proceso:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;ANALISIS&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Esta fase realizamos una investigación a conciencia para tratar de conocer todos los requisitos e implicaciones del proyecto que estamos por abordar. Es de vital importancia que reunamos toda la información pertinente al software a desarrollar y que comprendamos la naturaleza del problema o necesidad que tratamos de cubrir. No podemos elaborar un software que solucione un problema que no comprendemos o no sabemos como se debe solucionar. Recordemos que al computadoras son maquinas capacez de resolver problemas muy complejos, pero que somos nosotros a traves del software los que decimos como solucionar esos problemas.&lt;/p&gt;

&lt;p&gt;Cuando se trata de un software empresarial, esta fase se enfoca en conocer no solo los requisitos o necesidades de la organización, sino tambien en conocer  el funcionamiento de la organización, para crear un software que responda no solo a las necesidades, sino tambien a la estructura y funciones de la empresa.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;DISEÑO&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;El diseño del software es la fase en donde modelamos la estructura y apariencia del software una vez que ya conocemos la naturaleza del problema y hemos determinado cual sera la solución mas optima. El diseño del software se enfoca en modelar la base de datos, la arquitecura del software, la interfaz y los algoritmos o procedimientos del mismo.&lt;/p&gt;

&lt;p&gt;En el proceso del diseño debemos construir la solución que sera el software basandonos en los requerimientos obtenidos del analisis, en este sentido el diseño es el mapa  o el plano que seguira el programador para construir el software.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;CODIFICACIÓN&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;En esta fase tomamos todo lo que se plasmo en el diseño y lo traducimos en el conjunto de ordenes para computadora que es el software.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;PRUEBAS&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;En esta fase tomamos el software que se produjo en la codificación y probamos todas las partes y procesos del mismo, para asegurarnos que cumple con los requisitos que se habian especificado.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;IMPLEMENTACIÓN&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Esta es la fase en que ponemos el software en funcionamiento en el mundo real, o dentro de la organización para la que fue desarrollado. En esta fase se realizan todos los preparativos necesarios para asegurar que la inclusión del software dentro de la organización se realizara sin contratiempos y produciendo la menor cantidad de inconvenientes posible.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;MANTENIMIENTO&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Como sabemos las organizaciones no permanecen igual, cambian a lo largo del tiempo,así también los gustos y necesidades de las personas cambian, entonces el software necesita ser modificado para que se adapte a esos cambios, y es por ello que surge lo que en el software general las famosas actualizaciones.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;OBSOLECENCIA&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Si bien es cierto que el mantenimiento hace el software se adapte a los cambios del entorno, este mantenimeinto no es eterno, llega un punto en el que ya no es posible seguir haciendo modificaciones al sistema, en ese momento el software se vuelve obsoleto, ya sea por la tecnologia que se uso en su desarrollo o por que no fue diseñado para la cantidad de operaciones que se realizan hoy en día, se cual fuere la razón una vez que el software es obsoleto es tiempo de crear una nueva version del software y es cuando volvemos a encontrar nuestra necesidad, oportunidad o problema.&lt;/p&gt;

&lt;p&gt;cita:&lt;br&gt;
&lt;a href="https://sistemasumma.com/2011/02/21/ciclo-de-vida-clasico-de-los-sistemas/"&gt;Ciclo de vida de un sistema&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Conectar Aplicación Xamarin forms con SqLite</title>
      <dc:creator>Darwing  Castellanos</dc:creator>
      <pubDate>Sat, 15 Oct 2022 00:37:32 +0000</pubDate>
      <link>https://dev.to/darwing99/conectar-aplicacion-xamarin-forms-con-sqlite-1hmi</link>
      <guid>https://dev.to/darwing99/conectar-aplicacion-xamarin-forms-con-sqlite-1hmi</guid>
      <description>&lt;p&gt;El primer paso es Instalar el nuget sqlite-net-plc&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Q9HfGxkp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7s1e42fcil411rmcvovk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Q9HfGxkp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7s1e42fcil411rmcvovk.png" alt="Image description" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Despues creamos una clase de Conexion el cual tiene tres métodos,uno para retornar el path para asignar el nombre de base de datos, un método asíncrono y otro que no para conexiones .&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;ApplicationSales.models&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;SQLite&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System.Collections.Generic&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System.IO&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System.Text&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;


&lt;span class="k"&gt;namespace&lt;/span&gt; &lt;span class="nn"&gt;ApplicationSales.services.SqlLite&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;SqlLiteConexion&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;

        &lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;pathdb&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="nf"&gt;SqlLiteConexion&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="nf"&gt;Conector&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;dbname&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"db.sqlite"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;path&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Environment&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetFolderPath&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Environment&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SpecialFolder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Personal&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="n"&gt;pathdb&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Combine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dbname&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;pathdb&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="n"&gt;SQLiteConnection&lt;/span&gt; &lt;span class="nf"&gt;Conn&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;SQLiteConnection&lt;/span&gt; &lt;span class="n"&gt;conn&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;SQLiteConnection&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;App&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pedidosDB&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;conn&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;


        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="n"&gt;SQLiteAsyncConnection&lt;/span&gt; &lt;span class="nf"&gt;GetConnectionAsync&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;SQLiteAsyncConnection&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;App&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pedidosDB&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;En el App.cs asignamos un parametro en el constructor para asignar la base de datos a la aplicacion android.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;namespace&lt;/span&gt; &lt;span class="nn"&gt;ApplicationSales&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nf"&gt;XamlCompilation&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;XamlCompilationOptions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Compile&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;partial&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;App&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Application&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;pedidosDB&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="nf"&gt;App&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;SqlLite&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;

            &lt;span class="nf"&gt;InitializeComponent&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
            &lt;span class="n"&gt;pedidosDB&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;SqlLite&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="n"&gt;MainPage&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;MainPage&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

        &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="k"&gt;protected&lt;/span&gt; &lt;span class="k"&gt;override&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;OnStart&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="k"&gt;protected&lt;/span&gt; &lt;span class="k"&gt;override&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;OnSleep&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="k"&gt;protected&lt;/span&gt; &lt;span class="k"&gt;override&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;OnResume&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Creamos el modelo de datos que tendra la tabla en mi caso use una que tenía implementada.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt; &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;ProductosMesa&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="n"&gt;IdRegistro&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;get&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;set&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="n"&gt;IdProducto&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;get&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;set&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="n"&gt;IdPresentacion&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;get&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;set&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="n"&gt;IdMesa&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;get&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;set&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;decimal&lt;/span&gt;&lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="n"&gt;Cantidad&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;get&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;set&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="n"&gt;IdPrecio&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;get&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;set&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;NotasAdicionales&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;get&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;set&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;bool&lt;/span&gt;&lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="n"&gt;Llevar&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;get&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;set&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;bool&lt;/span&gt;&lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="n"&gt;Impreso&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;get&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;set&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="n"&gt;DateTime&lt;/span&gt;&lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="n"&gt;DateStamp&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;get&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;set&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;decimal&lt;/span&gt;&lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="n"&gt;PrecioDado&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;get&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;set&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;DescCombos&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;get&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;set&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;CadenaCombos&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;get&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;set&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="n"&gt;Ident&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;get&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;set&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;Desc1&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;get&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;set&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;Desc2&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;get&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;set&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="n"&gt;IdDivision&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;get&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;set&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Luego en el MainActivity de nuestro proyecto android agregamos la clase de conexion.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3ryF3aRR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jmloarttzvil799fcf85.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3ryF3aRR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jmloarttzvil799fcf85.png" alt="Image description" width="880" height="495"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt; &lt;span class="n"&gt;SqlLiteConexion&lt;/span&gt; &lt;span class="n"&gt;conexion&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;SqlLiteConexion&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;&lt;span class="c1"&gt;//llamamos la conexion&lt;/span&gt;
            &lt;span class="n"&gt;Xamarin&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Essentials&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Platform&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Init&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;savedInstanceState&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="k"&gt;global&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Xamarin&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Forms&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Forms&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Init&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;savedInstanceState&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="nf"&gt;LoadApplication&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;App&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;conexion&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Conector&lt;/span&gt;&lt;span class="p"&gt;()));&lt;/span&gt; &lt;span class="c1"&gt;//asignamos el método conector&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Luego creamos una interfaz para asignar los metodos que llamaremos en la clase servicio, esta solo es una manera de hacerlo, podemos incluso usar una clase abstracta o usar directamente una clase sin hacer herencia de clases.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LLQfRl1y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/96o1p07oyfo94hqwbja2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LLQfRl1y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/96o1p07oyfo94hqwbja2.png" alt="Image description" width="880" height="495"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;ApplicationSales.models&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;DocumentFormat.OpenXml.Office2021.DocumentTasks&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System.Collections.Generic&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System.Collections.ObjectModel&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System.Text&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System.Threading.Tasks&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;namespace&lt;/span&gt; &lt;span class="nn"&gt;ApplicationSales.services.SqlLite&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;interface&lt;/span&gt; &lt;span class="nc"&gt;ISqlLiteCrud&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;Task&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;ProductosMesa&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;GetProductos&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
        &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;InsertarProductos&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ProductosMesa&lt;/span&gt; &lt;span class="n"&gt;producto&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;ActualizarProductos&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ProductosMesa&lt;/span&gt; &lt;span class="n"&gt;producto&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;Task&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;BorrarProductos&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ProductosMesa&lt;/span&gt; &lt;span class="n"&gt;producto&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;BorrarTabla&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
        &lt;span class="n"&gt;Task&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;ProductosMesa&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;MaxRegistro&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Creamos la clase donde tendremos el crud y le implementamos la interface.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;ApplicationSales.models&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;SQLite&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System.Collections.Generic&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System.Collections.ObjectModel&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System.Linq&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System.Text&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System.Threading.Tasks&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;namespace&lt;/span&gt; &lt;span class="nn"&gt;ApplicationSales.services.SqlLite&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;SqlLiteCrud&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;ISqlLiteCrud&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="n"&gt;SqlLiteConexion&lt;/span&gt; &lt;span class="n"&gt;sqlLiteConexion&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="nf"&gt;SqlLiteCrud&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;sqlLiteConexion&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;SqlLiteConexion&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
            &lt;span class="n"&gt;sqlLiteConexion&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetConnectionAsync&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;CreateTableAsync&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;ProductosMesa&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;();&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;ActualizarProductos&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ProductosMesa&lt;/span&gt; &lt;span class="n"&gt;producto&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;sqlLiteConexion&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetConnectionAsync&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;UpdateAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;producto&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="n"&gt;Task&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;BorrarProductos&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ProductosMesa&lt;/span&gt; &lt;span class="n"&gt;producto&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;sqlLiteConexion&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetConnectionAsync&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;DeleteAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;producto&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;BorrarTabla&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;sqlLiteConexion&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetConnectionAsync&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;DeleteAllAsync&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;ProductosMesa&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;();&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="n"&gt;Task&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;ProductosMesa&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;GetProductos&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;sqlLiteConexion&lt;/span&gt;
                        &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Conn&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
                        &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Table&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;ProductosMesa&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;().&lt;/span&gt;&lt;span class="nf"&gt;ToList&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;InsertarProductos&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ProductosMesa&lt;/span&gt; &lt;span class="n"&gt;producto&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;try&lt;/span&gt;
            &lt;span class="p"&gt;{&lt;/span&gt;

                &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;sqlLiteConexion&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetConnectionAsync&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;InsertAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;producto&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
                &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;sqlLiteConexion&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetConnectionAsync&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;CloseAsync&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
                &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;Xamarin&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Forms&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Application&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Current&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;MainPage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;DisplayAlert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Agregar a cocina"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Guardado"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"ok"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;
            &lt;span class="k"&gt;catch&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;SQLiteException&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="n"&gt;Task&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;ProductosMesa&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;MaxRegistro&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;

            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;sqlLiteConexion&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Conn&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;Table&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;ProductosMesa&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;().&lt;/span&gt;&lt;span class="nf"&gt;ToList&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para hacer las acciones del Crud lo recomendado es usar el MVVM.&lt;br&gt;
Primero llamamos de forma global la interface ISqlLiteCrud.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="n"&gt;ISqlLiteCrud&lt;/span&gt; &lt;span class="n"&gt;sqlLiteCrud&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;DependencyService&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Get&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;ISqlLiteCrud&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ojo: Debemos de agregar la Interface en app.cs&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZmMRbP2s--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p0cny26njb43ako5juxt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZmMRbP2s--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p0cny26njb43ako5juxt.png" alt="Image description" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Usando el metodo para guardar&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;guardar&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
  &lt;span class="n"&gt;ProductosMesa&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;ProductosMesa&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
            &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="n"&gt;IdRegistro&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="n"&gt;IdProducto&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="n"&gt;Cantidad&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="n"&gt;PrecioDado&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="m"&gt;122&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="n"&gt;Llevar&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="n"&gt;NotasAdicionales&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"notas"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="n"&gt;Desc1&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"qweqwe"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="n"&gt;Desc2&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"asdasd"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="n"&gt;IdMesa&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;

            &lt;span class="p"&gt;};&lt;/span&gt;

            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ProductosMesa&lt;/span&gt; &lt;span class="p"&gt;!=&lt;/span&gt; &lt;span class="k"&gt;null&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="n"&gt;sqlLiteCrud&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;InsertarProductos&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ProductosMesa&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;


            &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Obtener la cantidad de registros de la tabla.&lt;br&gt;
Para hacer esto llamaremos el método MaxRegistro   de la clase SqlLiteCrud que obtiene la lista de registros de la tabla.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; var data=sqlLiteCrud.MaxRegistro().Result;//obtenemos registro
 int Id = data.Count();//contamos cantidad de registros
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Esta es una manera un poco compleja de crear conexión a SqLite en Xamarin forms.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
    </item>
    <item>
      <title>Uso de sp_helptext nameprocedure en SQLSERVER</title>
      <dc:creator>Darwing  Castellanos</dc:creator>
      <pubDate>Mon, 10 Oct 2022 04:04:42 +0000</pubDate>
      <link>https://dev.to/darwing99/uso-de-sphelptext-nameprocedure-en-sqlserver-4k6</link>
      <guid>https://dev.to/darwing99/uso-de-sphelptext-nameprocedure-en-sqlserver-4k6</guid>
      <description>&lt;p&gt;Al momento de editar un procedimiento almacenado y somos nuevos en el tema, nos encontramos con el problema: Que el editor nos tira una ensalada de código que no entendemos, un código similar al siguiente:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="n"&gt;USE&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;SistemaVentas&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="k"&gt;GO&lt;/span&gt;
&lt;span class="cm"&gt;/****** Object:  StoredProcedure [dbo].[ACTIVE_ROL]    Script Date: 10/9/2022 9:57:19 PM ******/&lt;/span&gt;
&lt;span class="k"&gt;SET&lt;/span&gt; &lt;span class="n"&gt;ANSI_NULLS&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt;
&lt;span class="k"&gt;GO&lt;/span&gt;
&lt;span class="k"&gt;SET&lt;/span&gt; &lt;span class="n"&gt;QUOTED_IDENTIFIER&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt;
&lt;span class="k"&gt;GO&lt;/span&gt;
&lt;span class="k"&gt;ALTER&lt;/span&gt; &lt;span class="k"&gt;PROCEDURE&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;dbo&lt;/span&gt;&lt;span class="p"&gt;].[&lt;/span&gt;&lt;span class="n"&gt;ACTIVE_ROL&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;
  &lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="n"&gt;Id&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  
  &lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="n"&gt;Active&lt;/span&gt;  &lt;span class="nb"&gt;bit&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;AS&lt;/span&gt;  
  &lt;span class="k"&gt;UPDATE&lt;/span&gt; &lt;span class="n"&gt;Roles&lt;/span&gt;
  &lt;span class="k"&gt;SET&lt;/span&gt; &lt;span class="n"&gt;Activo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="n"&gt;Active&lt;/span&gt;     
  &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;id_rol&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="n"&gt;Id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;sp_helptext nameprocedure&lt;/strong&gt; nos ayuda a obtener el codigo limpio del procedimiento almacenado.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="n"&gt;sp_helptext&lt;/span&gt; &lt;span class="n"&gt;ACTIVE_ROL&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Al ejecutar el comando &lt;strong&gt;sp_helptext ACTIVE_ROL&lt;/strong&gt; obtenemos un codigo limpio como salida.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PaW5LYWU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qstghgdnn6gx4aneas8d.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PaW5LYWU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qstghgdnn6gx4aneas8d.PNG" alt="Image description" width="402" height="297"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;El cual podemos modificar sin confundirnos en un procedimiento de alta categoría.&lt;/p&gt;

&lt;p&gt;Saludos!&lt;/p&gt;

</description>
      <category>sql</category>
    </item>
    <item>
      <title>Alterar tabla de base de datos y agregar llaves foraneas.</title>
      <dc:creator>Darwing  Castellanos</dc:creator>
      <pubDate>Sat, 08 Oct 2022 19:18:52 +0000</pubDate>
      <link>https://dev.to/darwing99/alterar-tabla-de-base-de-datos-y-agregar-llaves-foraneas-285a</link>
      <guid>https://dev.to/darwing99/alterar-tabla-de-base-de-datos-y-agregar-llaves-foraneas-285a</guid>
      <description>&lt;p&gt;AQUÍ UN EJEMPLO CON UNA TABLA FACTURAS A LA CUAL QUEREMOS AGREGAR RELACIÓN A TABLA MESEROS, MESAS, TURNOS , ESTACIONES, Y ENCABEZADOS.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;alter&lt;/span&gt; &lt;span class="k"&gt;table&lt;/span&gt; &lt;span class="n"&gt;Facturas&lt;/span&gt; &lt;span class="k"&gt;add&lt;/span&gt; &lt;span class="k"&gt;CONSTRAINT&lt;/span&gt; &lt;span class="n"&gt;FK_FFE&lt;/span&gt; &lt;span class="k"&gt;foreign&lt;/span&gt; &lt;span class="k"&gt;key&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;IdEncabezado&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;references&lt;/span&gt; &lt;span class="n"&gt;EncabezadosFacturas&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;IdEncabezado&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;alter&lt;/span&gt; &lt;span class="k"&gt;table&lt;/span&gt; &lt;span class="n"&gt;Facturas&lt;/span&gt; &lt;span class="k"&gt;add&lt;/span&gt; &lt;span class="k"&gt;CONSTRAINT&lt;/span&gt; &lt;span class="n"&gt;FK_FFEstacion&lt;/span&gt; &lt;span class="k"&gt;foreign&lt;/span&gt; &lt;span class="k"&gt;key&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;IdEstacion&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;references&lt;/span&gt; &lt;span class="n"&gt;Estaciones&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;IdEstacion&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;alter&lt;/span&gt; &lt;span class="k"&gt;table&lt;/span&gt; &lt;span class="n"&gt;Facturas&lt;/span&gt; &lt;span class="k"&gt;add&lt;/span&gt; &lt;span class="k"&gt;CONSTRAINT&lt;/span&gt; &lt;span class="n"&gt;FK_FFMesero&lt;/span&gt; &lt;span class="k"&gt;foreign&lt;/span&gt; &lt;span class="k"&gt;key&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;IdMesero&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;references&lt;/span&gt; &lt;span class="n"&gt;Usuarios&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;IdUsuario&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;alter&lt;/span&gt; &lt;span class="k"&gt;table&lt;/span&gt; &lt;span class="n"&gt;Facturas&lt;/span&gt; &lt;span class="k"&gt;add&lt;/span&gt; &lt;span class="k"&gt;CONSTRAINT&lt;/span&gt; &lt;span class="n"&gt;FK_FFM&lt;/span&gt; &lt;span class="k"&gt;foreign&lt;/span&gt; &lt;span class="k"&gt;key&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;IdMesa&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;references&lt;/span&gt; &lt;span class="n"&gt;Mesas&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;IdMesa&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;alter&lt;/span&gt; &lt;span class="k"&gt;table&lt;/span&gt; &lt;span class="n"&gt;Facturas&lt;/span&gt; &lt;span class="k"&gt;add&lt;/span&gt; &lt;span class="k"&gt;CONSTRAINT&lt;/span&gt; &lt;span class="n"&gt;FK_FFT&lt;/span&gt; &lt;span class="k"&gt;foreign&lt;/span&gt; &lt;span class="k"&gt;key&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;IdTurno&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;references&lt;/span&gt; &lt;span class="n"&gt;Turnos&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;IdTurno&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>sql</category>
    </item>
    <item>
      <title>Eliminar todos los procedimientos almacendos con un sentencia SQL Server.</title>
      <dc:creator>Darwing  Castellanos</dc:creator>
      <pubDate>Thu, 06 Oct 2022 21:43:57 +0000</pubDate>
      <link>https://dev.to/darwing99/eliminar-todos-los-procedimientos-almacendos-con-un-sentencia-sql-server-2f6l</link>
      <guid>https://dev.to/darwing99/eliminar-todos-los-procedimientos-almacendos-con-un-sentencia-sql-server-2f6l</guid>
      <description>&lt;p&gt;Debemos tener seleccionada la base de datos o usar especificame el comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="n"&gt;use&lt;/span&gt; &lt;span class="n"&gt;nombredatabase&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;declare&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="n"&gt;procName&lt;/span&gt; &lt;span class="nb"&gt;varchar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;declare&lt;/span&gt; &lt;span class="n"&gt;cur&lt;/span&gt; &lt;span class="k"&gt;cursor&lt;/span&gt; 



&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="k"&gt;select&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;objects&lt;/span&gt; &lt;span class="k"&gt;where&lt;/span&gt; &lt;span class="k"&gt;type&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'p'&lt;/span&gt;

&lt;span class="k"&gt;open&lt;/span&gt; &lt;span class="n"&gt;cur&lt;/span&gt;

&lt;span class="k"&gt;fetch&lt;/span&gt; &lt;span class="k"&gt;next&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="n"&gt;cur&lt;/span&gt; &lt;span class="k"&gt;into&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="n"&gt;procName&lt;/span&gt;

&lt;span class="n"&gt;while&lt;/span&gt; &lt;span class="o"&gt;@@&lt;/span&gt;&lt;span class="n"&gt;fetch_status&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;

&lt;span class="k"&gt;begin&lt;/span&gt;

    &lt;span class="k"&gt;exec&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'drop procedure '&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="n"&gt;procName&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;fetch&lt;/span&gt; &lt;span class="k"&gt;next&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="n"&gt;cur&lt;/span&gt; &lt;span class="k"&gt;into&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="n"&gt;procName&lt;/span&gt;

&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="k"&gt;close&lt;/span&gt; &lt;span class="n"&gt;cur&lt;/span&gt;

&lt;span class="k"&gt;deallocate&lt;/span&gt; &lt;span class="n"&gt;cur&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>sql</category>
    </item>
  </channel>
</rss>
