imagen en ola para slider
Asegura tu éxito con nuestras soluciones tecnológicas - Adfines (Impulsamos tu éxito) Asegura tu éxito con nuestras soluciones tecnológicas - Adfines (Impulsamos tu éxito)

Asegura tu éxito con nuestras soluciones tecnológicas

En Adfines, te ofrecemos diversas soluciones tecnológicas que te permitirán optimizar tu negocio. Descubre nuestras herramientas innovadoras y seguras para asegurar un futuro exitoso.

Soluciones tecnológicas a medida para tus necesidades - Adfines (Impulsamos tu éxito) Soluciones tecnológicas a medida para tus necesidades - Adfines (Impulsamos tu éxito)

Soluciones tecnológicas personalizadas para tus necesidades

Obtén la solución tecnológica que se adapte a tus necesidades. En Adfines, te ofrecemos opciones flexibles y herramientas personalizadas. Nuestros expertos te guiarán en el proceso para que consigas la mejor tecnología para tu proyecto.

Forma parte de una comunidad innovadora y comprometida - Adfines (Impulsamos tu éxito) Forma parte de una comunidad innovadora y comprometida - Adfines (Impulsamos tu éxito)

Forma parte de una comunidad innovadora y dedicada

Al unirte a Adfines, te integrarás a una comunidad de clientes innovadores y colaborativos. Participa en actividades exclusivas, eventos y programas que fortalecen las conexiones entre nuestros miembros.

Haz crecer tu negocio como cliente - Adfines (Impulsamos tu éxito) Haz crecer tu negocio como cliente - Adfines (Impulsamos tu éxito)

Haz crecer tu negocio como cliente

Únete a Adfines y descubre las soluciones tecnológicas exclusivas que tenemos para ti. Obtén innovación y asegura el éxito de tu negocio como cliente de nuestra plataforma.

Accede a soluciones tecnológicas integrales en un solo lugar - Adfines (Impulsamos tu éxito) Accede a soluciones tecnológicas integrales en un solo lugar - Adfines (Impulsamos tu éxito)

Accede a soluciones tecnológicas integrales en un solo lugar

En Adfines, te ofrecemos una amplia gama de soluciones tecnológicas en un solo lugar. Desde herramientas de desarrollo hasta servicios de soporte y consultoría, simplifica tus procesos tecnológicos con nosotros.

imagen en ola inferior para slider
Logo de adfines en menú

Net.Ganesha 2.0.5

Adfines - Contigo en lo que tu Sueñes

Es un paquete NuGet diseñado para la plataforma .NET que simplifica la interacción con bases de datos y APIs. Proporciona herramientas para gestionar conexiones y transacciones, ejecutar consultas SQL de manera segura, y manejar errores de forma centralizada. Es compatible con múltiples bases de datos como PostgreSQL, SQL Server, y MySQL, y está optimizado para su uso en aplicaciones modernas de .NET9 en adelante. Además, su flexibilidad permite adaptarse a diversas configuraciones y entornos, incluidos los basados en la nube.

Tiempo de aprobación: 2 Horas Desde que se comience a experimentar con la libreria

Más información
Simplificación del manejo de bases de datos y APIs
  • Adfines.Net.Ganesha proporciona abstracciones que simplifican la conexión, transacción, y consulta de bases de datos, así como la interacción con APIs externas. Esto reduce la complejidad del código y minimiza el riesgo de errores comunes.
Centralización y robustez en la gestión de errores
  • Ofrece mecanismos centralizados para el manejo de errores y advertencias, lo que mejora la robustez del código y facilita el diagnóstico y solución de problemas. Esta centralización permite mantener un control más riguroso sobre cómo se gestionan las excepciones en toda la aplicación.
Compatibilidad y flexibilidad
  • Es compatible con múltiples bases de datos populares y versiones modernas de .NET9, lo que brinda flexibilidad en el desarrollo y despliegue de aplicaciones. Además, está preparado para integrarse en entornos de nube, lo que facilita la creación de aplicaciones escalables y distribuidas.

Adfines.Net.Ganesha es un paquete NuGet para .NET que facilita la interacción con bases de datos y APIs. Ofrece:

  1. Abstracciones para gestionar conexiones y transacciones de bases de datos: Simplifica el manejo de conexiones y transacciones, haciendo que las operaciones con bases de datos sean más seguras y eficientes.

  2. Herramientas para comunicarse con APIs externas: Proporciona métodos y herramientas que permiten interactuar de manera eficiente con servicios externos, facilitando la integración de diferentes sistemas.

  3. Mecanismos centralizados para manejar errores: Centraliza la gestión de errores y excepciones, mejorando la robustez y mantenimiento del código.

  4. Compatible con .NET Core, .NET Framework, y versiones de .NET9 en adelante: Funciona en todas las versiones modernas de .NET, asegurando compatibilidad y flexibilidad.

  5. Compatibilidad con bases de datos: Soporta bases de datos populares como: PostgreSql, MySql y SqlServer (en un futuro se integraran MongoDB y Oracle)
  6. Gestión de bases de datos con SQL embebido preparado para inyecciones SQL: Ofrece compatibilidad para consultas SQL en línea, con protección contra inyecciones SQL mediante el uso de consultas parametrizadas.

  7. Facilidad y flexibilidad de creación de conexiones a bases de datos: Permite crear y gestionar conexiones a bases de datos de manera sencilla y flexible, adaptándose a diferentes necesidades y configuraciones.

  8. Integración con ORM: Compatible con ORM como Entity Framework, permitiendo combinar la flexibilidad del SQL embebido con las ventajas de un ORM.

  9. Soporte para transacciones distribuidas: Proporciona soporte para manejar transacciones que involucren múltiples bases de datos, asegurando consistencia en operaciones complejas.

  10. Optimización y rendimiento: Incluye características de optimización, como manejo eficiente de conexiones y caché de consultas, para mejorar el rendimiento general de la aplicación.

  11. Seguridad adicional: Además de la protección contra inyecciones SQL, el paquete incluye características como cifrado de datos y manejo seguro de credenciales para mejorar la seguridad.

  12. Compatibilidad con entornos de nube: Optimizado para funcionar en entornos de nube como Azure y AWS, facilitando el desarrollo de aplicaciones escalables y distribuidas.

  13. Documentación y ejemplos: Proporciona documentación clara y ejemplos detallados para facilitar su adopción y uso en proyectos.


Acciones a las bases de datos

  Select: Utilizado para seleccionar elementos de una tabla o vista.

  Exec: Ejecuta un procedimiento almacenado.

  Insert: Realiza una inserción de datos en una tabla.

  Update: Actualiza los datos de una tabla.

  Delete: Elimina un registro de una tabla.

  Raw: Permite ejecutar cualquier script en la base de datos.

  GetInserted: Retorna el ID insertado de la tabla si tiene auto incrementable

  Props: Proporciona información sobre una base de datos, con tres sobrecargas:

a. Información de los esquemas.
b. Información de las tablas dentro de un esquema.
c. Información de las propiedades de una tabla en un esquema.


Creación de las tablas de errores y advertencia (opcional)

PostgreSql

create table documentation.error (

       id serial4 not null primary key,

       creacion timestamp not null,

       valor text not null,

       codigo text not null,

       descripcion text not null

);

create table documentation.warn (

       id serial4 not null primary key,

       creacion timestamp not null,

       valor text not null,

       codigo text not null,

       descripcion text not null

);

SqlServer

create table documentation.error (

       id int identity(1,1) not null primary key,

       creacion datetime not null,

       valor varchar(max) not null,

       codigo varchar(max) not null,

       descripcion varchar(max) not null,

);

create table documentation.warn (

       id int identity(1,1) not null primary key,

       creacion datetime not null,

       valor varchar(max) not null,

       codigo varchar(max) not null,

       descripcion varchar(max) not null,

);

MySql

create table documentation_error (

    id int auto_increment not null primary key,

    creacion datetime not null,

    valor text not null,

    codigo text not null,

    descripcion text not null

);

create table documentation_warn (

    id int auto_increment not null primary key,

    creacion datetime not null,

    valor text not null,

    codigo text not null,

    descripcion text not null

);


Iniciar una conexión

Existen 4 formas distintas de iniciar una conexión a una base de datos con Ganesha y posteriormente se puede verificar si la conexión a la base de datos se ha establecido exitosamente.

Cada base de datos tiene una clase correspondiente con el mismo nombre para diferenciar entre las conexiones que se desean establecer. Sin embargo, el uso, la instanciación, la inicialización de la conexión, la consulta y la gestión de la base de datos se realizan de manera uniforme.

Nota: Ganesha únicamente tiene la capacidad de conectarse a una base de datos a través de un puerto. Si observa un nombre de instancia en lugar de un puerto en una conexión, debe determinar el puerto en el que se encuentra abierta esa base de datos.

Postgres desde Clase

Cabe señalar que esta es solo una de las muchas formas posibles de implementar la conexión desde una clase. Dado que se trata de una clase, el límite está en la creatividad del desarrollador.

using Adfines.Net.Ganesha.Bdd;

using Adfines.Net.Ganesha.Xtra;

PostgreSql psql = new CtxPsql().Psql;

Console.WriteLine(psql.Success);

class CtxPsql

{

    public PostgreSql Psql;

    public CtxPsql()

    {

        Initializer initializer = new Initializer()

        {

            Ip = "localhost",

            Port = 5432,

            PoolSize = 10,

            Bdd = "prueba2",

            User = "postgres",

            Password = "root",

            Error = "documentation.error",

            Warning = "documentation.warn"

        };

        Psql = new PostgreSql(initializer);

    }

}


Postgres desde AppSettings.json

Archivo appsettings.json

{

  "AdfinesGaneshaNet": {

    "ConeccionPostgreSql": {

      "Ip": "localhost",

      "Port": 5432,

      "PoolSize": 10,

      "Bdd": "prueba2",

      "User": "postgres",

      "Password": "root#",

      "Error": "documentation.error",

      "Warning": "documentation.warn"

    }

  }

}

Clase main para acceder a la base de datos

using Adfines.Net.Ganesha.Bdd;

PostgreSql psql = new PostgreSql("ConeccionPostgreSql");

Console.WriteLine(psql.Success);

 

Postgres como Parametro

using Adfines.Net.Ganesha.Bdd;

PostgreSql psql = new PostgreSql

(

    "localhost",

    5432,

    10,

    "prueba2",

    "postgres",

    "root",

    "documentation.error",

    "documentation.warn"

);

Console.WriteLine(psql.Success);

 

Postgres como Archivo JSON

Se creará un archivo json en el mismo nivel del archivo compilado llamado: ctx1.json


Dentro del archivo se colocará lo siguiente

{

  "ip": "localhost",

  "port": 5432,

  "pool": 10,

  "bdd": "prueba2",

  "user": "postgres",

  "password": "root#",

  "error": "documentation.error",

  "warning": "documentation.warn"

}

 

Para establecer la conexión solo tendríamos que establecer los siguientes parámetros desde nuestra clase principal

using Adfines.Net.Ganesha.Bdd;

PostgreSql psql = new PostgreSql("", "ctx1", "json");

Console.WriteLine(psql.Success);

 

El primer parámetro es para especificar la ruta del archivo, el segundo su nombre y el tercero su extensión. Si el archivo no se encuentra en la raíz del proyecto y se encuentra en cualquier ubicación. Solamente colocar el path de la maquina o el path de red de otro equipo para que pueda leer la configuración.

Postgres como archivo

Se creará un archivo json en el mismo nivel del archivo compilado llamado: ctx1.chillon


Dentro del archivo se colocará lo siguiente

localhost;5432;10;prueba2;postgres;root;documentation.error;documentation.warn

Para establecer la conexión solo tendríamos que establecer los siguientes parámetros desde nuestra clase principal

using Adfines.Net.Ganesha.Bdd;

PostgreSql psql = new PostgreSql("", "ctx1", "chillon");

Console.WriteLine(psql.Success);

 

El primer parámetro es para especificar la ruta del archivo, el segundo su nombre y el tercero su extensión. Si el archivo no se encuentra en la raíz del proyecto y se encuentra en cualquier ubicación. Solamente colocar el path de la maquina o el path de red de otro equipo para que pueda leer la configuración.

Conclusión

Si no se necesitan las tablas de error y advertencia simplemente dejar los espacios en blanco

Para implementar en SqlServer y MySql simplemente cambiar el nombre de la clase PostgreSql a MySql y SqlServer

Por problemas de espacios de nombres, la clase MySql no se puede utilizar libremente. Para ello tiene dos opciones

Utilizar el nombre completo de la clase y su ubicación:

Adfines.Net.Ganesha.Bdd.MySql psql = new("", "ctx1", "chillon");

Console.WriteLine(psql.Success);

 

O utilizar un alias

using MSQL = Adfines.Net.Ganesha.Bdd.MySql;

MSQL psql = new("", "ctx1", "chillon");

Console.WriteLine(psql.Success);


Manejar errores y Advertencias desde Try Catch

using Adfines.Net.Ganesha.Bdd;

using Adfines.Net.Ganesha.Xtra;

/*instanciar la clase CtxPsql para obtener la coneccion a la bdd*/

PostgreSql psql = new CtxPsql().Psql;

/*si la coneccion no se establecio, salir del aplicativo*/

if (!psql.Success) return;

/*creacion de variable string que posteriormente se convertira a int*/

string number = "valentina";

try

{

    /*intentar convertir */

    int convert = int.Parse(number);

}

catch (Exception e)

{

    /*

     tanto .Error como .Warning reciben dos parametros

    1. parametro de tipo Exception

    2. descripcion del error para que se inserte en la base de datos (opcional)

     estos metodos retornan dos variables

    1. error: se refiere a si ha habido un error cuando se intento escribir el error en la base de datos

    2. idError: el id que retorna la tabla al insertar el error

     */

    (bool error, long idError) = psql.Error(e, $"Ocurrio un error tratando de convertir {number} a numero");

    (bool warn, long idWarn) = psql.Warning(e, $"{number} no es un numero");

}

/*Crear una clase para instanciar la coneccion*/

class CtxPsql

{

    /*Variable PostgreSql para que se conecte a la base de datos al instanciarse la clase*/

    public PostgreSql Psql;

    /*instancia de la clase*/

    public CtxPsql()

    {

        /*inicializador con las credenciales de las bases de datos*/

        Initializer initializer = new()

        {

            Ip = "localhost",

            Port = 5432,

            PoolSize = 10,

            Bdd = "prueba2",

            User = "postgres",

            Password = "root",

            Error = "documentation.error",

            Warning = "documentation.warn"

        };

        /*asignarle un valor a la coneccion*/

        Psql = new(initializer);

    }

}

Las tablas de errores y de advertencias que utiliza Ganesha también pueden ser utilizadas por try catch desde su propio código.

Al insertarse el error y la advertencia en las tablas correspondientes se vera literalmente el error del propio c# (si se pasa la variable de Exception) y la descripción que se le ha colocado (opcional) aparte de la fecha y hora exacta en la que se coloco.




NOTA

Para evitar la creación de tantas tablas y bases de datos. Para estos ejemplos solamente se utilizará la tabla ejemplo en el esquema documentación.

Select (SQL embebido)

using Adfines.Net.Ganesha.Bdd;

using Adfines.Net.Ganesha.Xtra;

/*instanciar la clase CtxPsql para obtener la coneccion a la bdd*/

PostgreSql psql = new CtxPsql().Psql;

/*si la coneccion no se establecio, salir del aplicativo*/

if (!psql.Success) return;

/*

 select recibe 2 parametros

1. la consulta sql

2. mensaje descriptivo para error, si la consulta da error esa descripcion se insertara en la tabla de errores

 select retorna 7 variables

list: List<IDictionary<string, object>> de los elementos seleccionados

error: variable tipo bool en el caso de error la consulta (true o false)

array: JArray de los elementos seleccionados

firstd: primer objeto seleccionado IDictionary<string, object>

firsto: primer objeto seleccionado JObject

count: indicador de cuantos elementos hay en la lista

errorId: el id de la tabla de error que se inserto si la consulta dio error

 NOTA

a la consulta no se le indica el Select

 */

var (list, error, array, firstd, firsto, count, errorId) = psql.Select

(

    "* from documentation.ejemplo",

    "no se pudo extraer la informacion de la tabla ejemplo"

);

/*si la consulta dio error se saldra del ejecutable y pintara en pantalla que ha dado error la consulta*/

if (error)

{

    Console.WriteLine($"Hubo un error especificado en el ID: {errorId}");

    return;

}

Console.WriteLine(array.ToString());

/*Crear una clase para instanciar la coneccion*/

class CtxPsql

{

    /*Variable PostgreSql para que se conecte a la base de datos al instanciarse la clase*/

    public PostgreSql Psql;

    /*instancia de la clase*/

    public CtxPsql()

    {

        /*inicializador con las credenciales de las bases de datos*/

        Initializer initializer = new()

        {

            Ip = "localhost",

            Port = 5432,

            PoolSize = 10,

            Bdd = "prueba2",

            User = "postgres",

            Password = "root",

            Error = "documentation.error",

            Warning = "documentation.warn"

        };

        /*asignarle un valor a la coneccion*/

        Psql = new(initializer);

    }

}

 

Si el aplicativo no falla en ninguna ocasión, al final pintara en consola la información de la base de datos en su forma arreglo > objeto.


Insert Into (Sql Embebido)

using Adfines.Net.Ganesha.Bdd;

using Adfines.Net.Ganesha.Xtra;

/*instanciar la clase CtxPsql para obtener la coneccion a la bdd*/

PostgreSql psql = new CtxPsql().Psql;

/*si la coneccion no se establecio, salir del aplicativo*/

if (!psql.Success) return;

/*

 insert recibe 2 parametros

1. la consulta sql

2. mensaje descriptivo para error, si la consulta da error esa descripcion se insertara en la tabla de errores

 insert retorna 2 variables

success: si la consulta se ejecuto sin ningun problema

errorId: si la consulta tubo problemas retornara el valor de la columna id que se inserto en error

 NOTA

a la consulta no se le indica el insert into

 */

var (success, errorId) = psql.Insert

(

    "documentation.ejemplo (nombre,edad) values ('daniel enrique', 25)",

    "No se pudo insertar un ejemplo"

);

class CtxPsql

{

    /*Variable PostgreSql para que se conecte a la base de datos al instanciarse la clase*/

    public PostgreSql Psql;

    /*instancia de la clase*/

    public CtxPsql()

    {

        /*inicializador con las credenciales de las bases de datos*/

        Initializer initializer = new()

        {

            Ip = "localhost",

            Port = 5432,

            PoolSize = 10,

            Bdd = "prueba2",

            User = "postgres",

            Password = "root",

            Error = "documentation.error",

            Warning = "documentation.warn"

        };

        /*asignarle un valor a la coneccion*/

        Psql = new(initializer);

    }

}


Si el aplicativo no falla en ningúna ocacion al finalizar retornara lo siguiente

Success: true

errorId: 0



Update (Sql Embebido)

using Adfines.Net.Ganesha.Bdd;

using Adfines.Net.Ganesha.Xtra;

/*instanciar la clase CtxPsql para obtener la coneccion a la bdd*/

PostgreSql psql = new CtxPsql().Psql;

/*si la coneccion no se establecio, salir del aplicativo*/

if (!psql.Success) return;

/*

 insert recibe 2 parametros

1. la consulta sql

2. mensaje descriptivo para error, si la consulta da error esa descripcion se insertara en la tabla de errores

 insert retorna 2 variables

success: si la consulta se ejecuto sin ningun problema

errorId: si la consulta tubo problemas retornara el valor de la columna id que se inserto en error

 NOTA

a la consulta no se le indica el insert into

 */

var (success, errorId) = psql.Update

(

    "documentation.ejemplo set nombre = 'daniel perez' where id = 3",

    "No se pudo editar el ejemplo 3"

);

class CtxPsql

{

    /*Variable PostgreSql para que se conecte a la base de datos al instanciarse la clase*/

    public PostgreSql Psql;

    /*instancia de la clase*/

    public CtxPsql()

    {

        /*inicializador con las credenciales de las bases de datos*/

        Initializer initializer = new()

        {

            Ip = "localhost",

            Port = 5432,

            PoolSize = 10,

            Bdd = "prueba2",

            User = "postgres",

            Password = "root",

            Error = "documentation.error",

            Warning = "documentation.warn"

        };

        /*asignarle un valor a la coneccion*/

        Psql = new(initializer);

    }

}

 

 

 

Si el aplicativo no falla en ningúna ocacion al finalizar retornara lo siguiente

Success: true

errorId: 0




Delete (Sql Embebido)

using Adfines.Net.Ganesha.Bdd;

using Adfines.Net.Ganesha.Xtra;

/*instanciar la clase CtxPsql para obtener la coneccion a la bdd*/

PostgreSql psql = new CtxPsql().Psql;

/*si la coneccion no se establecio, salir del aplicativo*/

if (!psql.Success) return;

/*

 insert recibe 2 parametros

1. la consulta sql

2. mensaje descriptivo para error, si la consulta da error esa descripcion se insertara en la tabla de errores

 insert retorna 2 variables

success: si la consulta se ejecuto sin ningun problema

errorId: si la consulta tubo problemas retornara el valor de la columna id que se inserto en error

 NOTA

a la consulta no se le indica el insert into

 */

var (success, errorId) = psql.Delete

(

    "documentation.ejemplo where id = 3",

    "No se pudo editar el ejemplo 3"

);

class CtxPsql

{

    /*Variable PostgreSql para que se conecte a la base de datos al instanciarse la clase*/

    public PostgreSql Psql;

    /*instancia de la clase*/

    public CtxPsql()

    {

        /*inicializador con las credenciales de las bases de datos*/

        Initializer initializer = new()

        {

            Ip = "localhost",

            Port = 5432,

            PoolSize = 10,

            Bdd = "prueba2",

            User = "postgres",

            Password = "root",

            Error = "documentation.error",

            Warning = "documentation.warn"

        };

        /*asignarle un valor a la coneccion*/

        Psql = new(initializer);

    }

}

i

Si el aplicativo no falla en ningúna ocacion al finalizar retornara lo siguiente

Success: true

errorId: 0



Inserted (Sql Embebido)

using Adfines.Net.Ganesha.Bdd;

using Adfines.Net.Ganesha.Xtra;

/*instanciar la clase CtxPsql para obtener la coneccion a la bdd*/

PostgreSql psql = new CtxPsql().Psql;

/*si la coneccion no se establecio, salir del aplicativo*/

if (!psql.Success) return;

/*

 insert recibe 2 parametros

1. la consulta sql

2. mensaje descriptivo para error, si la consulta da error esa descripcion se insertara en la tabla de errores

 insert retorna 2 variables

inserted: id de la nueva fila insertada (si da error, el id sera 0 o igualmente si la tabla no tiene un identity)

error: indicador si la consulta ha dado error

errorId: si la consulta tubo problemas retornara el valor de la columna id que se inserto en error

 NOTA

a la consulta no se le indica el insert into

 */

(long inserted, bool error, long errorId) = psql.GetInserted

(

    "documentation.ejemplo (nombre, edad) values ('orlando melgar', 32)",

    "No se pudo insertar a orlando melgar"

);

Console.WriteLine($"ID insertado: {inserted}");

class CtxPsql

{

    /*Variable PostgreSql para que se conecte a la base de datos al instanciarse la clase*/

    public PostgreSql Psql;

    /*instancia de la clase*/

    public CtxPsql()

    {

        /*inicializador con las credenciales de las bases de datos*/

        Initializer initializer = new()

        {

            Ip = "localhost",

            Port = 5432,

            PoolSize = 10,

            Bdd = "prueba2",

            User = "postgres",

            Password = "root",

            Error = "documentation.error",

            Warning = "documentation.warn"

        };

        /*asignarle un valor a la coneccion*/

        Psql = new(initializer);

    }

}






Raw (Sql Embebido)

using Adfines.Net.Ganesha.Bdd;

using Adfines.Net.Ganesha.Xtra;

/*instanciar la clase CtxPsql para obtener la coneccion a la bdd*/

PostgreSql psql = new CtxPsql().Psql;

/*si la coneccion no se establecio, salir del aplicativo*/

if (!psql.Success) return;

/*

 insert recibe 2 parametros

1. la consulta sql

2. mensaje descriptivo para error, si la consulta da error esa descripcion se insertara en la tabla de errores

 insert retorna 2 variables

success: si la consulta se ejecuto sin ningun problema

errorId: si la consulta tubo problemas retornara el valor de la columna id que se inserto en error

 NOTA

a la consulta no se le indica el insert into

 */

var (success, errorId) = psql.Raw

(

    @"

        create table documentation.ejemplo2 (

            id serial4 not null primary key,

            nombre varchar(25) not null,

            edad int not null,

            direccion varchar(250) not null

        )

    ",

    "No se pudo crear la nueva tabla"

);

class CtxPsql

{

    /*Variable PostgreSql para que se conecte a la base de datos al instanciarse la clase*/

    public PostgreSql Psql;

    /*instancia de la clase*/

    public CtxPsql()

    {

        /*inicializador con las credenciales de las bases de datos*/

        Initializer initializer = new()

        {

            Ip = "localhost",

            Port = 5432,

            PoolSize = 10,

            Bdd = "prueba2",

            User = "postgres",

            Password = "root",

            Error = "documentation.error",

            Warning = "documentation.warn"

        };

        /*asignarle un valor a la coneccion*/

        Psql = new(initializer);

    }

}

 

En este ejemplo se intentara crear una tabla desde este código en PostgreSql





Exec (Sql Embebido)

using Adfines.Net.Ganesha.Bdd;

using Adfines.Net.Ganesha.Xtra;

/*instanciar la clase CtxPsql para obtener la coneccion a la bdd*/

PostgreSql psql = new CtxPsql().Psql;

/*si la coneccion no se establecio, salir del aplicativo*/

if (!psql.Success) return;

/*

 exec recibe 2 parametros

1. la consulta sql

2. mensaje descriptivo para error, si la consulta da error esa descripcion se insertara en la tabla de errores

 exex retorna 7 variables

list: List<IDictionary<string, object>> de los elementos seleccionados

error: variable tipo bool en el caso de error la consulta (true o false)

array: JArray de los elementos seleccionados

firstd: primer objeto seleccionado IDictionary<string, object>

firsto: primer objeto seleccionado JObject

count: indicador de cuantos elementos hay en la lista

errorId: el id de la tabla de error que se inserto si la consulta dio error

 NOTA

a la consulta no se le indica el exec

 */

var (list, error, array, firstd, firsto, count, errorId) = psql.Exec

(

    "documentation.exec_para_ejemplo 112",

    "No se pudo crear la nueva tabla"

);

class CtxPsql

{

    /*Variable PostgreSql para que se conecte a la base de datos al instanciarse la clase*/

    public PostgreSql Psql;

    /*instancia de la clase*/

    public CtxPsql()

    {

        /*inicializador con las credenciales de las bases de datos*/

        Initializer initializer = new()

        {

            Ip = "localhost",

            Port = 5432,

            PoolSize = 10,

            Bdd = "prueba2",

            User = "postgres",

            Password = "root",

            Error = "documentation.error",

            Warning = "documentation.warn"

        };

        /*asignarle un valor a la coneccion*/

        Psql = new(initializer);

    }

}


El método Exec emula el comportamiento del método Select
El procedimiento puede retornar ninguna a x filas, las filas se pueden leer con la variable list y array.

Si retorna información el primer elemento se guarda en firstd o en firsto

Si la consulta/procedimiento almacenado da error entonces la variable error y errorId estarán en falso y con el numero identificador de la tabla de error que se insertó consecutivamente.

Prop (Sql Embebido) SqlServer y PostgreSql: Listar Schemas

using Adfines.Net.Ganesha.Bdd;

using Adfines.Net.Ganesha.Xtra;

PostgreSql psql = new CtxPsql().Psql;

if (!psql.Success) return;

(List<string> list, bool error, long errorId) = psql.Props();

foreach (string s in list) Console.WriteLine(s);

class CtxPsql

{

    public PostgreSql Psql;

    public CtxPsql()

    {

        Initializer initializer = new()

        {

            Ip = "localhost",

            Port = 5432,

            PoolSize = 10,

            Bdd = "prueba2",

            User = "postgres",

            Password = "root",

            Error = "documentation.error",

            Warning = "documentation.warn"

        };

        Psql = new(initializer);

    }

}




Prop (Sql Embebido) SqlServer y PostgreSql: Listas Tablas de cualquier Schema

using Adfines.Net.Ganesha.Bdd;

using Adfines.Net.Ganesha.Xtra;

PostgreSql psql = new CtxPsql().Psql;

if (!psql.Success) return;

(List<string> list, bool error, long errorId) = psql.Props("documentation");

foreach (string s in list) Console.WriteLine(s);

class CtxPsql

{

    public PostgreSql Psql;

    public CtxPsql()

    {

        Initializer initializer = new()

        {

            Ip = "localhost",

            Port = 5432,

            PoolSize = 10,

            Bdd = "prueba2",

            User = "postgres",

            Password = "root",

            Error = "documentation.error",

            Warning = "documentation.warn"

        };

        Psql = new(initializer);

    }

}




Prop (Sql Embebido) SqlServer y PostgreSql: Propiedades de Cualquier tabla de un Schema

using Adfines.Net.Ganesha.Bdd;

using Adfines.Net.Ganesha.Xtra;

PostgreSql psql = new CtxPsql().Psql;

if (!psql.Success) return;

var props = psql.Props("documentation", "error");

foreach (var s in props.list)

{

    Console.WriteLine("nombre: " + s.Name);

}

class CtxPsql

{

    public PostgreSql Psql;

    public CtxPsql()

    {

        Initializer initializer = new()

        {

            Ip = "localhost",

            Port = 5432,

            PoolSize = 10,

            Bdd = "prueba2",

            User = "postgres",

            Password = "root",

            Error = "documentation.error",

            Warning = "documentation.warn"

        };

        Psql = new(initializer);

    }

}

 


Ver Paquete Nuget