Todos los productos
Search
Centro de documentos

Lindorm:Uso de ODBC para desarrollar aplicaciones

Última actualización: Sep 05, 2026

Conéctese a LindormTable desde una aplicación en C o C++ mediante el controlador Open Database Connectivity (ODBC) para MySQL.

Requisitos previos

Antes de empezar, asegúrese de cumplir con lo siguiente:

Configuración del controlador

Paso 1: Instalar el controlador ODBC de MySQL

Descargue e instale el controlador ODBC para MySQL desde el sitio web oficial de MySQL.

Paso 2: Instalar unixODBC

Instale unixODBC en Linux:

yum install unixODBC-devel

Paso 3: Configurar el controlador en odbcinst.ini

Agregue la siguiente entrada a su archivo odbcinst.ini.

[MySQL]
Description	= ODBC for MySQL
Driver		= /usr/lib/libmyodbc8a.so
Setup		= /usr/lib/libmyodbc8w.so
Driver64	= /usr/lib64/libmyodbc8a.so
Setup64		= /usr/lib64/libmyodbc8w.so
FileUsage	= 1

Parámetro

Descripción

Description

Etiqueta de esta entrada del controlador. Establezca un valor personalizado.

Driver

Ruta de la biblioteca del controlador ODBC de 32 bits.

Setup

Ruta de la biblioteca del instalador del controlador ODBC de 32 bits.

Driver64

Ruta de la biblioteca del controlador ODBC de 64 bits.

Setup64

Ruta de la biblioteca del instalador del controlador ODBC de 64 bits.

FileUsage

Valor fijo. No lo modifique. Valor: 1.

Paso 4: Conectarse a LindormTable en el código

Use SQLDriverConnect para establecer la conexión. El formato de la cadena de conexión es a continuación:

DRIVER={MySQL};SERVER=<endpoint>;PORT=33060;DATABASE=<database>;USER=<username>;PASSWORD=<password>

Parámetro

Descripción

DRIVER

Nombre del controlador configurado en odbcinst.ini.

SERVER

Endpoint de LindormTable para MySQL. Consulte Consultar endpoints.

PORT

Puerto para acceder a LindormTable mediante MySQL. Valor fijo: 33060.

DATABASE

Base de datos a la que se conectará. De forma predeterminada, el cliente se conecta a una base de datos llamada default.

USER

Su nombre de usuario de LindormTable. Para restablecer su contraseña, consulte Manage users.

PASSWORD

Su contraseña de LindormTable.

Elección del endpoint adecuado para SERVER:

  • Instancia de ECS (VPC): Use el LindormTable VPC endpoint for MySQL para obtener menor latencia y mayor seguridad.

  • Servidor local (Internet): Primero habilite el endpoint público en la consola de Lindorm. Vaya a Database Connections > Wide Table Engine y haga clic en Enable Public Endpoint en la pestaña Wide Table Engine. Después, use el LindormTable Internet endpoint for MySQL.

Paso 5: Ejecutar consultas

Una vez establecida la conexión, asigne un identificador de instrucción y ejecute SQL con SQLExecDirect. En el siguiente ejemplo se ejecuta show databases y se imprime cada fila del resultado:

if (ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO) {
    printf("Connection established. \n");

    // Perform the query.
    SQLAllocHandle(SQL_HANDLE_STMT, dbc, &stmt);
    SQLExecDirect(stmt, (SQLCHAR*)"show databases", SQL_NTS);

    // Obtain query results.
    SQLCHAR result[50];
    while (SQLFetch(stmt) == SQL_SUCCESS) {
        SQLGetData(stmt, 1, SQL_C_CHAR, result, sizeof(result), NULL);
        printf("database: %s\n", result);
    }

    // Release resources.
    SQLFreeHandle(SQL_HANDLE_STMT, stmt);
    SQLDisconnect(dbc);
} else {
    SQLCHAR sqlState[6];
    SQLCHAR msg[SQL_MAX_MESSAGE_LENGTH];
    SQLINTEGER nativeError;
    SQLSMALLINT actualMsgLen;

    SQLGetDiagRec(SQL_HANDLE_DBC, dbc, 1, sqlState, &nativeError, msg, sizeof(msg), &actualMsgLen);
    printf("Connection failed: %s\n", msg);
}

// Release resources.
SQLFreeHandle(SQL_HANDLE_DBC, dbc);
SQLFreeHandle(SQL_HANDLE_ENV, env);

return 0;

Ejemplo completo

El siguiente programa inicializa el entorno ODBC, se conecta a LindormTable, consulta todas las bases de datos y libera todos los recursos.

Reemplace los valores de marcador de posición de la cadena de conexión con su endpoint, nombre de base de datos, nombre de usuario y contraseña reales.

#include <stdio.h>
#include <stdlib.h>
#include <sql.h>
#include <sqlext.h>

int main() {
    // Define connection handles.
    SQLHENV env;
    SQLHDBC dbc;
    SQLHSTMT stmt;
    SQLRETURN ret;

    // Initialize the ODBC environment.
    SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env);
    SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, SQL_IS_INTEGER);

    // Allocate a connection handle and set the login timeout.
    SQLAllocHandle(SQL_HANDLE_DBC, env, &dbc);
    SQLSetConnectAttr(dbc, SQL_LOGIN_TIMEOUT, (SQLPOINTER)5, SQL_IS_INTEGER);

    // Connect to LindormTable.
    // Replace the SERVER, DATABASE, USER, and PASSWORD values with your own.
    ret = SQLDriverConnect(dbc, NULL, (SQLCHAR*)"DRIVER={MySQL};SERVER=ld-uf6k8yqb741t3****-proxy-sql-lindorm-public.lindorm.rds.aliyuncs.com;PORT=33060;DATABASE=default;USER=user;PASSWORD=test", SQL_NTS, NULL, 0, NULL, SQL_DRIVER_COMPLETE);

    if (ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO) {
        printf("Connection established. \n");

        // Run a query.
        SQLAllocHandle(SQL_HANDLE_STMT, dbc, &stmt);
        SQLExecDirect(stmt, (SQLCHAR*)"show databases", SQL_NTS);

        // Print each row.
        SQLCHAR result[50];
        while (SQLFetch(stmt) == SQL_SUCCESS) {
            SQLGetData(stmt, 1, SQL_C_CHAR, result, sizeof(result), NULL);
            printf("database: %s\n", result);
        }

        // Release statement resources.
        SQLFreeHandle(SQL_HANDLE_STMT, stmt);
        SQLDisconnect(dbc);
    } else {
        SQLCHAR sqlState[6];
        SQLCHAR msg[SQL_MAX_MESSAGE_LENGTH];
        SQLINTEGER nativeError;
        SQLSMALLINT actualMsgLen;

        SQLGetDiagRec(SQL_HANDLE_DBC, dbc, 1, sqlState, &nativeError, msg, sizeof(msg), &actualMsgLen);
        printf("Connection failed: %s\n", msg);
    }

    // Release connection and environment resources.
    SQLFreeHandle(SQL_HANDLE_DBC, dbc);
    SQLFreeHandle(SQL_HANDLE_ENV, env);

    return 0;
}

Si su instancia solo tiene la base de datos predeterminada, la salida será a continuación:

Connection established.
database: default
database: information_schema