C/Visual C - Acceso a base de datos Access ODBC desde aplicacio

 
Vista:

Acceso a base de datos Access ODBC desde aplicacio

Publicado por ppnacho (8 intervenciones) el 09/08/2002 15:14:17
Se que exiten funciones para acceder a una base de datos ODBC (en este caso Access), con funciones del api Win32. ¿Sabe alguien cuales son esas funciones?. En caso afirmativo si tuvieseis algún ejemplo sería maravilloso. Muchas gracias a todos por vuestra atención
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Acceso a bases de datos ODBC en Access

Publicado por Alejandro (913 intervenciones) el 12/03/2025 23:29:31
Para acceder a una base de datos ODBC, como Microsoft Access, utilizando funciones del API de Win32, puedes utilizar las siguientes funciones clave:

1. SQLDriverConnect: Esta función se utiliza para establecer una conexión a la base de datos ODBC.
2. SQLExecDirect: Permite ejecutar una consulta SQL directamente.
3. SQLFetch: Se utiliza para recuperar filas de un conjunto de resultados.
4. SQLGetData: Permite obtener datos de una columna específica en la fila actual.
5. SQLDisconnect: Cierra la conexión a la base de datos.

Ejemplo de código



Aquí tienes un ejemplo básico en C que muestra cómo conectarse a una base de datos Access a través de ODBC:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#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;
}

Notas



- Asegúrate de tener configurado un DSN (Data Source Name) para tu base de datos Access.
- Este código es un ejemplo básico y puede requerir ajustes según tu entorno y necesidades específicas.
- Para más detalles sobre las funciones ODBC, puedes consultar la referencia de API ODBC (https://learn.microsoft.com/en-us/sql/odbc/reference/syntax/odbc-api-reference?view=sql-server-ver16).

¡Buena suerte, PPNacho!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar