Cómo trabajar con ODBC en .NET Framework

Mejorando el acceso a datos con ADO.NET y el Proveedor de Datos ODBC .NET

Introducción

El .NET Framework es conocido por su modelo de acceso a datos ADO.NET, el cual ofrece mejoras significativas en escalabilidad, velocidad y la capacidad de trabajar de manera desconectada. Sin embargo, en algunos casos, puede haber problemas al acceder a sistemas que no cuenten con un proveedor de datos específico. Afortunadamente, es posible añadir soporte para la tecnología ODBC (Open DataBase Connectivity), que es un estándar de la industria con controladores disponibles para la mayoría de los sistemas en uso.

Trabajando con ODBC

ODBC es una interfaz uniforme que permite acceder a diversos sistemas de bases de datos. Se trata de una biblioteca de acceso a bases de datos que facilita a las aplicaciones trabajar con los datos contenidos en una base de datos. Lo interesante de ODBC es que se puede utilizar para acceder a casi cualquier tipo de base de datos, ya sea Oracle, Access, Sybase, mySQL, hojas de cálculo, archivos de texto, entre otros. Es una tecnología madura, por lo que generalmente no suele haber problemas para encontrar un controlador ODBC para un sistema de bases de datos específico.

Proveedor de Datos ODBC .NET

Cómo instalar y configurar Sybase Adaptive Server Enterprise (ASE) en Linux

El Proveedor de Datos ODBC .NET es un componente complementario del Kit de Desarrollo de Software (SDK) del .NET Framework de Microsoft. Proporciona acceso a controladores ODBC nativos de la misma manera que el Proveedor de Datos OLE DB .NET proporciona acceso a proveedores OLE DB nativos. El Proveedor de Datos ODBC .NET está diseñado para funcionar con todos los controladores ODBC compatibles, aunque el sitio web de Microsoft indica que solo se ha probado con el controlador ODBC de Microsoft SQL, el controlador ODBC de Microsoft para Oracle y el controlador ODBC de Microsoft Jet.

Configuración de ODBC

ODBC consta de un controlador y un administrador de controladores. El controlador es específico para el producto de un proveedor de bases de datos, por ejemplo, Oracle proporciona un controlador para trabajar con un sistema Oracle. El administrador de controladores se utiliza para instalar los archivos de controlador necesarios y configurar las fuentes de datos (que aprovechan el controlador) que se utilizarán en las aplicaciones. En sistemas basados en Windows, se utiliza el Administrador de orígenes de datos ODBC para crear y mantener conexiones ODBC. Una vez que se instala y configura adecuadamente un controlador ODBC, es posible utilizarlo en una aplicación .NET.

Clases ODBC

Una vez que se instala el Proveedor de Datos ODBC .NET, es posible utilizarlo en una aplicación. Si se utiliza Visual Studio .NET, se puede agregar una referencia a su archivo de biblioteca de enlace dinámico (DLL), Microsoft.Data.Odbc.dll. Si se está desarrollando desde la línea de comandos, se puede agregar una referencia durante la compilación o copiar el archivo DLL en el directorio "bin" de la aplicación.

Las clases ODBC se encuentran en el espacio de nombres Microsoft.Data.Odbc e incluyen las siguientes clases:

Qué es sudo y por qué deberías usarlo
  • OdbcConnection: Se utiliza para conectarse a una fuente de datos ODBC. El nombre asignado a la fuente de datos ODBC, durante su configuración, se utiliza para acceder a ella.
  • OdbcCommand: Se utiliza para ejecutar un comando en una conexión.
  • OdbcDataReader: Permite recorrer los resultados de una consulta en una fuente de datos.
  • OdbcParameter: Se utiliza para vincular un parámetro a un comando.
  • OdbcDataAdapter: Se utiliza para llenar un objeto DataSet desde una fuente de datos ODBC.
  • OdbcCommandBuilder: Crea declaraciones predeterminadas de inserción, actualización y eliminación para un adaptador de datos ODBC.

A continuación, se presenta un ejemplo que utiliza algunas de estas clases. Utiliza una fuente de datos ODBC previamente creada llamada "Test". Se utiliza el nombre DSN en la cadena de conexión, junto con el ID de usuario y la contraseña para acceder a la base de datos. Se utiliza una consulta SQL básica para recuperar todas las filas de la tabla "Customers" con los valores de las columnas mostrados. Finalmente, se cierra la conexión y se eliminan todos los demás objetos. El código en C# es el siguiente:

using System;
using Microsoft.Data.Odbc;

namespace BuilderODBC {
    class TestClass {
        static void Main(string[] args) {
            string connectionString = "DSN=Test;UID=Chester;Pwd=Tester;";
            string sql = "SELECT CustomerID, ContactName, ContactTitle FROM Customers";
            OdbcConnection conn = new OdbcConnection(connectionString);
            conn.Open();
            OdbcCommand comm = new OdbcCommand(sql, conn);
            OdbcDataReader dr = comm.ExecuteReader();
            while (dr.Read()) {
                Console.WriteLine(dr.GetValue(0).ToString());
                Console.WriteLine(dr.GetValue(1).ToString());
                Console.WriteLine(dr.GetValue(2).ToString());
            }
            conn.Close();
            dr.Close();
            comm.Dispose();
            conn.Dispose();
        }
    }
}

El código equivalente en VB.NET es el siguiente:

Imports Microsoft.Data.Odbc

Module Module1
    Sub Main() 
        Dim conn As OdbcConnection
        Dim comm As OdbcCommand
        Dim dr As OdbcDataReader
        Dim connectionString As String
        Dim sql As String

        connectionString = "DSN=PracticalLotusScriptTest;UID=Chester;Pwd=Tester;"
        sql = "SELECT CustomerID, ContactName, ContactTitle FROM Customers"
        conn = New OdbcConnection(connectionString)
        conn.Open()
        comm = New OdbcCommand(sql, conn)
        dr = comm.ExecuteReader()
        While (dr.Read())
            Console.WriteLine(dr.GetValue(0).ToString())
            Console.WriteLine(dr.GetValue(1).ToString())
            Console.WriteLine(dr.GetValue(2).ToString())
        End While
        conn.Close()
        dr.Close()
        comm.Dispose()
        conn.Dispose()
    End Sub
End Module

Manejo de errores con ODBC

El espacio de nombres Microsoft.Data.Odbc incluye la clase OdbcException para manejar cualquier error que pueda ocurrir al interactuar con fuentes de datos ODBC. Es posible modificar nuestro ejemplo para utilizar esta clase y manejar excepciones en tiempo de ejecución. El código alterado en C# es el siguiente:

using System;
using Microsoft.Data.Odbc;

namespace BuilderODBC {
    class TestClass {
        static void Main(string[] args) {
            string connectionString = "DSN=PracticalLotusScriptTest;UID=Chester;Pwd=Tester;";
            string sql = "SELECT CustomerID, ContactName, ContactTitle FROM Customers";
            OdbcConnection conn = null;
            OdbcCommand comm = null;
            OdbcDataReader dr = null;

            try {
                conn = new OdbcConnection(connectionString);
                conn.Open();
                comm = new OdbcCommand(sql, conn);
                dr = comm.ExecuteReader();
                while (dr.Read()) {
                    Console.WriteLine(dr.GetValue(0).ToString());
                    Console.WriteLine(dr.GetValue(1).ToString());
                    Console.WriteLine(dr.GetValue(2).ToString());
                }
                dr.Close();
            } catch (OdbcException oe) {
                Console.WriteLine("An ODBC exception occurred: " + oe.Message.ToString());
            } catch (Exception e) {
                Console.WriteLine("An exception occurred: " + e.Message.ToString());
            } finally {
                if (conn.State == System.Data.ConnectionState.Open) {
                    conn.Close();
                }
                comm.Dispose();
                conn.Dispose();
            }
        }
    }
}

Se puede observar que los objetos ODBC se declaran fuera del bloque try/catch, para poder utilizarlos en el bloque finally. Las excepciones de ODBC se manejan de forma separada a los errores genéricos. Se verifica si la conexión está abierta antes de cerrarla.

Acceso a cualquier fuente de datos

Cómo eliminar registros duplicados en una base de datos de Access

ODBC lleva muchos años en el mercado y, como resultado, existen controladores ODBC para casi cualquier fuente de datos imaginable. El Proveedor de Datos ODBC .NET proporciona acceso ODBC en aplicaciones .NET a través del espacio de nombres Microsoft.Data.Odbc. Utilice este proveedor de datos cuando no pueda encontrar un proveedor de datos nativo para el sistema de datos utilizado en su aplicación.

En Newsmatic nos especializamos en tecnología de vanguardia, contamos con los artículos mas novedosos sobre Gestión de datos, allí encontraras muchos artículos similares a Cómo trabajar con ODBC en .NET Framework , tenemos lo ultimo en tecnología 2023.

Artículos Relacionados

Subir

Utilizamos cookies para mejorar su experiencia de navegación, mostrarle anuncios o contenidos personalizados y analizar nuestro tráfico. Al hacer clic en “Aceptar todo” usted da su consentimiento a nuestro uso de las cookies.