Páginas

sábado, 24 de diciembre de 2011

Npgsql. Conectarse a BD PostGreSQL sin usar ODBC

Como sabrán .NET es un Framework de programación que en teoría pretende ser independiente de la plataforma y facilitar el desarrollo aunque en la practica esa portabilidad es un tanto cuanto artificial y depende del proyecto Mono para funcionar en más plataformas además de Windows, pero al menos esta estandarizado y permite crear aplicaciones multiplataforma aunque con algunas restricciones.


Npgsql es un .Net Data Provider (Proveedor de Datos) independiente de NET o Mono que permite a estos establecer conexiones a bases de datos PostGreSQL que son tan comunes. Así Npgsql es una alternativa a los ODBC para cuando no tenemos el control de estos o no nos dan los resultados esperados, y Npgsql para el desarrollador resulta muy similar en uso a ODBC.

¿Cómo utilizarlo?

Podemos descargar la ultima versión desde la página oficial y agregarlas a nuestro proyecto con facilidad copiando la libreria Npgsql.dll en el directorio de la aplicación (o en otro directorio si ha configurado Path to Private Components).


En aplicaciones web ASP.NET y Web Services se debe alojar Npgsql.dll y Mono.Security.dll en la carpeta bin de la aplicación.


Luego agregamos a nuestro sistema como referencia las .dll antes mencionadas y ya podremos usarlas en nuestro código.


Donde las usemos hay que agregar los espacios de nombres Data y Npgsql. Aquí dejo un mínimo ejemplo de la sintaxis.


using System.Data;
using Npgsql;


// Establecer la conexión a base de datos
NpgsqlConnection conn = new NpgsqlConnection("[cadena de conexion]");
// Abrir la conexion
conn.Open();
// Indicar una instrucción a la base de datos
NpgsqlCommand Command = new NpgsqlCommand("[instruccion SQL]", conn);
// Ejecutar la instrucción SQL
Command.ExecuteNonQuery();
// Cerrar la conexión
conn.Close();


Cómo pueden ver es idéntico al uso de conexiones por ODBC, pero ya no dependemos del ODBC instalado en la PC donde nuestra aplicación sea ejecutada. Prácticamente es cambiar todo donde diga ODBC por Npgsql, por ejemplo un OBDCDataReader se reemplaza por NpgsqlDataReader.


La cadena de conexión que usaremos para Npgsql es estandar. Yo la utilizo así:


Server=[IP];Port=[Puerto];Database=[DB];User Id=[Usuario];Password=[Contraseña];


En las versiones más recientes de Npgsql la codificación es siempre UNICODE por lo que el atributo encoding ha quedado obsoleto, pero en caso necesario, las versiones más antiguas si manejan encoding SQL_ASCII o UNICODE según se indique en la cadena de conexión.


Y así es como logramos conectarnos a una base de datos PostGreSQL desde Mono sin depender de ODBC.

No hay comentarios:

Publicar un comentario

Por favor trata de escribir bien, no te pido que no te falte ni un acento pero por favor evita escribir como metroflogger o facebookero. Este blog es un sitio decente. Gracias.