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.
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"]}");
}
}
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.
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()
JDBC es una API de Java que permite ejecutar operaciones sobre bases de datos mediante drivers específicos para cada sistema de gestión.
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();
}
}
}
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.
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();
}
}
}
SQL/CLI es parte del estándar SQL que define una interfaz para acceder a bases de datos mediante llamadas a funciones desde aplicaciones.
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;
}