Todos os produtos
Search
Central de documentação

Lindorm:Use ODBC para desenvolver aplicações

Última atualização: Jun 28, 2026

Conecte-se ao LindormTable a partir de uma aplicação C ou C++ usando o driver Open Database Connectivity (ODBC) para MySQL.

Pré-requisitos

Antes de começar, verifique se:

Configure o driver

Etapa 1: Instale o driver ODBC para MySQL

Baixe e instale o driver ODBC para MySQL no site oficial do MySQL.

Etapa 2: Instale o unixODBC

Instale o unixODBC no Linux:

yum install unixODBC-devel

Etapa 3: Configure o driver no arquivo odbcinst.ini

Adicione a seguinte entrada ao arquivo 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

Descrição

Description

Rótulo desta entrada de driver. Defina um valor personalizado.

Driver

Caminho da biblioteca do driver ODBC de 32 bits.

Setup

Caminho da biblioteca de instalação do driver ODBC de 32 bits.

Driver64

Caminho da biblioteca do driver ODBC de 64 bits.

Setup64

Caminho da biblioteca de instalação do driver ODBC de 64 bits.

FileUsage

Valor fixo. Não altere. Valor: 1.

Etapa 4: Conecte-se ao LindormTable no código

Use SQLDriverConnect para estabelecer a conexão. O formato da string de conexão é:

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

Parâmetro

Descrição

DRIVER

Nome do driver configurado em odbcinst.ini.

SERVER

Endpoint do LindormTable para MySQL. Consulte Visualize endpoints.

PORT

Porta de acesso MySQL ao LindormTable. Valor fixo: 33060.

DATABASE

Banco de dados de destino. Por padrão, o cliente conecta-se ao banco de dados default.

USER

Nome de usuário do LindormTable. Para redefinir a senha, consulte Gerencie usuários.

PASSWORD

Senha do LindormTable.

Como escolher o endpoint correto para SERVER:

  • Instância ECS (VPC): Use o LindormTable VPC endpoint for MySQL para garantir menor latência e maior segurança.

  • Servidor local (Internet): Ative o endpoint público no console do Lindorm. Acesse Database Connections > Wide Table Engine e clique em Enable Public Endpoint na aba Wide Table Engine. Em seguida, utilize o LindormTable Internet endpoint for MySQL.

Etapa 5: Execute consultas

Após conectar-se com sucesso, aloque um identificador de instrução e execute SQL com SQLExecDirect. O exemplo abaixo executa show databases e imprime cada linha do 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;

Exemplo completo

O programa a seguir inicializa o ambiente ODBC, conecta-se ao LindormTable, consulta todos os bancos de dados e libera os recursos.

Substitua os valores de espaço reservado na string de conexão pelo endpoint real, nome do banco de dados, nome de usuário e senha.

#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;
}

Se a instância tiver apenas o banco de dados padrão, a saída será:

Connection established.
database: default
database: information_schema