#include <iostream>
#include <windows.h>
#include <sql.h>
#include <sqlext.h>
void conectarBaseDeDatos() {
SQLHENV hEnv;
SQLHDBC hDbc;
SQLHSTMT hStmt;
SQLRETURN ret;
// Inicializar el entorno ODBC
SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &hEnv);
SQLSetEnvAttr(hEnv, SQL_ATTR_ENVIRONMENT, SQL_OV_ODBC3, 0);
// Conectar a la base de datos
SQLAllocHandle(SQL_HANDLE_DBC, hEnv, &hDbc);
ret = SQLDriverConnect(hDbc, NULL, (SQLCHAR*)"DSN=TuDSN;UID=;PWD=;", SQL_NTS,
NULL, 0, NULL, SQL_DRIVER_COMPLETE);
if (ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO) {
std::cout << "Conexión exitosa a la base de datos." << std::endl;
// Crear un manejador de declaración
SQLAllocHandle(SQL_HANDLE_STMT, hDbc, &hStmt);
// Ejecutar una consulta
ret = SQLExecDirect(hStmt, (SQLCHAR*)"SELECT * FROM TuTabla", SQL_NTS);
if (ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO) {
SQLCHAR nombre[256];
SQLINTEGER id;
// Obtener los resultados
while (SQLFetch(hStmt) == SQL_SUCCESS) {
SQLGetData(hStmt, 1, SQL_C_LONG, &id, 0, NULL);
SQLGetData(hStmt, 2, SQL_C_CHAR, nombre, sizeof(nombre), NULL);
std::cout << "ID: " << id << ", Nombre: " << nombre << std::endl;
}
} else {
std::cerr << "Error al ejecutar la consulta." << std::endl;
}
// Liberar recursos
SQLFreeHandle(SQL_HANDLE_STMT, hStmt);
} else {
std::cerr << "Error al conectar a la base de datos." << std::endl;
}
// Desconectar y liberar el entorno
SQLDisconnect(hDbc);
SQLFreeHandle(SQL_HANDLE_DBC, hDbc);
SQLFreeHandle(SQL_HANDLE_ENV, hEnv);
}
int main() {
conectarBaseDeDatos();
return 0;
}