#include <windows.h>
#include <sql.h>
#include <sqlext.h>
#include <stdio.h>
int main() {
SQLHENV hEnv;
SQLHDBC hDbc;
SQLHSTMT hStmt;
SQLRETURN ret;
// Inicializar el entorno ODBC
SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &hEnv);
SQLSetEnvAttr(hEnv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0);
// Conectar a la base de datos
SQLAllocHandle(SQL_HANDLE_DBC, hEnv, &hDbc);
SQLCHAR *dsn = (SQLCHAR *)"DSN=MiDSN;UID=miUsuario;PWD=miContraseña;";
ret = SQLDriverConnect(hDbc, NULL, dsn, SQL_NTS, NULL, 0, NULL, SQL_DRIVER_COMPLETE);
if (ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO) {
printf("Conexión exitosa.\n");
// Crear un manejador de declaración
SQLAllocHandle(SQL_HANDLE_STMT, hDbc, &hStmt);
// Ejecutar una consulta
ret = SQLExecDirect(hStmt, (SQLCHAR *)"SELECT * FROM MiTabla", SQL_NTS);
if (ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO) {
// Recuperar datos
while (SQLFetch(hStmt) == SQL_SUCCESS) {
// Aquí puedes usar SQLGetData para obtener los datos de las columnas
// Ejemplo: SQLGetData(hStmt, 1, SQL_C_CHAR, buffer, sizeof(buffer), NULL);
}
}
// Liberar el manejador de declaración
SQLFreeHandle(SQL_HANDLE_STMT, hStmt);
} else {
printf("Error en la conexión.\n");
}
// Desconectar y liberar recursos
SQLDisconnect(hDbc);
SQLFreeHandle(SQL_HANDLE_DBC, hDbc);
SQLFreeHandle(SQL_HANDLE_ENV, hEnv);
return 0;
}