Tecnologías de Conectividad a Bases de Datos

1. OLEDB (Object Linking and Embedding for Databases)

Conceptos Básicos

OLEDB es una API de Microsoft basada en COM (Component Object Model) para acceso a datos que permite conectarse a diversos orígenes de datos, tanto relacionales como no relacionales.

Herramientas Necesarias

Proveedores OLEDB ADO (ActiveX Data Objects) Visual Studio SQL Server Management Studio

Ejercicio Práctico Básico

Objetivo: Conectarse a una base de datos SQL Server usando OLEDB desde C# y realizar una consulta simple.

// Conexión OLEDB en C#
string connectionString = @"Provider=SQLOLEDB;Data Source=servidor;
                          Initial Catalog=basedatos;
                          User ID=usuario;Password=contraseña;";

using (OleDbConnection conexion = new OleDbConnection(connectionString))
{
    conexion.Open();
    OleDbCommand comando = new OleDbCommand("SELECT TOP 5 * FROM Productos", conexion);
    OleDbDataReader lector = comando.ExecuteReader();
    
    while (lector.Read())
    {
        Console.WriteLine($"{lector["Nombre"]} - {lector["Precio"]}");
    }
}

2. ODBC (Open Database Connectivity)

Conceptos Básicos

ODBC es un estándar de acceso a bases de datos que permite conectar aplicaciones con diversos sistemas de gestión de bases de datos mediante drivers específicos.

Herramientas Necesarias

Administrador de ODBC Drivers ODBC pyodbc (Python) unixODBC (Linux)

Ejercicio Práctico Básico

Objetivo: Configurar un DSN ODBC y conectarse desde Python para consultar datos.

# Conexión ODBC en Python
import pyodbc

# Configurar DSN previamente en Administrador de ODBC
conexion = pyodbc.connect('DSN=mi_dsn;UID=usuario;PWD=contraseña')
cursor = conexion.cursor()

# Ejecutar consulta
cursor.execute("SELECT * FROM empleados LIMIT 5")

# Mostrar resultados
for fila in cursor:
    print(fila)

conexion.close()

3. JDBC (Java Database Connectivity)

Conceptos Básicos

JDBC es una API de Java que permite ejecutar operaciones sobre bases de datos mediante drivers específicos para cada sistema de gestión.

Herramientas Necesarias

JDK (Java Development Kit) Driver JDBC específico IDE (Eclipse, IntelliJ) Apache DBCP (Pool conexiones)

Ejercicio Práctico Básico

Objetivo: Conectarse a una base de datos MySQL desde Java usando JDBC.

// Conexión JDBC en Java
import java.sql.*;

public class JDBCTest {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/mibase";
        String user = "usuario";
        String password = "contraseña";
        
        try (Connection conexion = DriverManager.getConnection(url, user, password)) {
            Statement stmt = conexion.createStatement();
            ResultSet rs = stmt.executeQuery("SELECT * FROM clientes LIMIT 5");
            
            while (rs.next()) {
                System.out.println(rs.getString("nombre") + " - " + rs.getString("email"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

4. SQLJ (SQL embebido en Java)

Conceptos Básicos

SQLJ es una extensión de Java que permite embeber sentencias SQL estáticas directamente en código Java, con verificación en tiempo de compilación.

Herramientas Necesarias

Preprocesador SQLJ Oracle SQLJ Perfiles de tiempo de ejecución Herramientas de conversión JDBC-SQLJ

Ejercicio Práctico Básico

Objetivo: Usar SQLJ para consultar y actualizar datos en una base de datos Oracle.

// Ejemplo SQLJ en Java
import java.sql.*;
import sqlj.runtime.*;
import sqlj.runtime.ref.*;

public class SQLJExample {
    public static void main(String[] args) {
        try {
            Connection conexion = DriverManager.getConnection(
                "jdbc:oracle:thin:@localhost:1521:ORCL", "usuario", "contraseña");
            DefaultContext ctx = new DefaultContext(conexion);
            DefaultContext.setDefaultContext(ctx);
            
            // SQL embebido - Consulta
            String nombre;
            double salario;
            #sql {
                SELECT nombre, salario INTO :nombre, :salario
                FROM empleados WHERE id = 101
            };
            System.out.println("Empleado: " + nombre + ", Salario: " + salario);
            
            // SQL embebido - Actualización
            String dept = "Ventas";
            int empId = 101;
            #sql {
                UPDATE empleados SET departamento = :dept WHERE id = :empId
            };
            
            ctx.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

5. SQL/CLI (Call Level Interface)

Conceptos Básicos

SQL/CLI es parte del estándar SQL que define una interfaz para acceder a bases de datos mediante llamadas a funciones desde aplicaciones.

Herramientas Necesarias

Biblioteca SQL/CLI Headers sqlcli.h Compilador C/C++ Driver de base de datos compatible

Ejercicio Práctico Básico

Objetivo: Usar SQL/CLI en C para conectarse a una base de datos y realizar una consulta.

/* Ejemplo SQL/CLI en C */
#include 
#include 

int main() {
    SQLHENV env;
    SQLHDBC dbc;
    SQLHSTMT stmt;
    SQLCHAR nombre[100];
    
    SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env);
    SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);
    SQLAllocHandle(SQL_HANDLE_DBC, env, &dbc);
    
    if (SQL_SUCCEEDED(SQLConnect(dbc, (SQLCHAR*)"mi_dsn", SQL_NTS,
                     (SQLCHAR*)"usuario", SQL_NTS,
                     (SQLCHAR*)"contraseña", SQL_NTS))) {
        SQLAllocHandle(SQL_HANDLE_STMT, dbc, &stmt);
        SQLExecDirect(stmt, (SQLCHAR*)"SELECT nombre FROM clientes", SQL_NTS);
        
        while (SQLFetch(stmt) == SQL_SUCCESS) {
            SQLGetData(stmt, 1, SQL_C_CHAR, nombre, sizeof(nombre), NULL);
            printf("Cliente: %s\n", nombre);
        }
        
        SQLFreeHandle(SQL_HANDLE_STMT, stmt);
        SQLDisconnect(dbc);
    }
    
    SQLFreeHandle(SQL_HANDLE_DBC, dbc);
    SQLFreeHandle(SQL_HANDLE_ENV, env);
    return 0;
}
☰   UF2215-Contenidos