Todos los productos
Search
Centro de documentos

Lindorm:Uso de la API de C para desarrollar aplicaciones

Última actualización: Sep 05, 2026

Este tema describe cómo usar la API de C de MySQL para conectarse a LindormTable y ejecutar operaciones SQL desde una aplicación en C o C++.

Requisitos previos

Antes de empezar, compruebe que cuenta con lo siguiente:

Conexión a LindormTable mediante la API de C de MySQL

Paso 1: Instalar la biblioteca de la API de C de MySQL

Instale el paquete mysql-devel, que proporciona los encabezados de la API de C de MySQL (incluido mysql/mysql.h) y las bibliotecas de cliente. A continuación se muestra un ejemplo con CentOS:

yum install mysql-devel

Una vez finalizada la instalación, el archivo de encabezado se ubica en /usr/include/mysql/mysql.h y la biblioteca de cliente es libmysqlclient. Utilice #include "mysql/mysql.h" en su archivo fuente para incluirla.

Paso 2: Configurar los parámetros de conexión

Defina los parámetros de conexión en su archivo fuente de C:

char lindorm_addr[]     = "ld-uf6k8yqb741t3****-proxy-sql-lindorm-public.lindorm.rds.aliyuncs.com";
char lindorm_user[]     = "user";
char lindorm_password[] = "test";
char database[]         = "default";
int  lindorm_mysql_port = 33060;

A continuación se describe cada parámetro:

Parámetro

Descripción

lindorm_addr

El endpoint de LindormTable para MySQL. Para más información sobre cómo obtenerlo, consulte View endpoints. Utilice el endpoint de VPC cuando su aplicación se ejecute en una instancia de ECS, o bien el endpoint de Internet si la conexión se establece a través de una red pública.

lindorm_user

El nombre de usuario de LindormTable. Si olvida la contraseña, restablézcala en el sistema de gestión del clúster. Para más información, consulte Manage users.

lindorm_password

La contraseña de LindormTable.

database

La base de datos a la que se conectará. El valor predeterminado es default.

lindorm_mysql_port

El puerto del protocolo MySQL para LindormTable. Su valor fijo es 33060.

Importante

Elija el endpoint adecuado según su despliegue:

  • Instancia de ECS (recomendado): Utilice una conexión de nube privada virtual (VPC) para obtener menor latencia y mayor seguridad. Establezca lindorm_addr con la dirección de VPC compatible con MySQL.

  • Aplicación local: Habilite primero el acceso al endpoint público. En la consola, vaya a Database Connections > Wide Table Engine y haga clic en Enable Public Endpoint. Establezca lindorm_addr con la dirección de Internet compatible con MySQL.

Paso 3: Crear una conexión y ejecutar SQL

Llame a mysql_real_connect() para establecer la conexión. Después, utilice la sintaxis SQL de tabla ancha para ejecutar las operaciones. A continuación se muestra un ejemplo que se conecta a LindormTable y crea una tabla:

MYSQL      conn;
int        res;

mysql_init(&conn);

// Create a connection
if (!mysql_real_connect(
        &conn,               // Connection handle
        lindorm_addr,        // Host: LindormTable endpoint
        lindorm_user,        // Username
        lindorm_password,    // Password
        database,            // Default database
        lindorm_mysql_port,  // Port: 33060
        NULL,                // Unix socket (not used)
        0                    // Client flags (none)
)) {
    fprintf(stderr, "Failed to connect: %s\n", mysql_error(&conn));
    mysql_close(&conn);
    exit(1);
} else {
    printf("conect lindorm successfully\n");
}

// Create a table
char create_table[] = "create table if not exists user_test(id int, name varchar,age int, primary key(id))";
res = mysql_query(&conn, create_table);
if (!res) {
    printf("Table created successfully\n");
} else {
    fprintf(stderr, "Create table error: %s\n", mysql_error(&conn));
    mysql_close(&conn);
    exit(1);
}

// ... run additional queries, then release resources
mysql_free_result(result);
mysql_close(&conn);

Paso 4: Compilar y ejecutar

Utilice mysql_config para proporcionar los indicadores correctos al compilador y al enlazador:

gcc -o a.out $(mysql_config --cflags) demo.c $(mysql_config --libs)
./a.out

Indicador

Efecto

--cflags

Agrega la ruta de inclusión para que el compilador localice mysql/mysql.h.

--libs

Enlaza con libmysqlclient.

Sugerencia: Si obtiene errores de enlazador como undefined reference to 'mysql_init' u otros similares, compruebe que $(mysql_config --libs) aparezca después de su archivo fuente en el comando. GCC resuelve los símbolos de izquierda a derecha.

Ejemplo completo

A continuación se muestra un código con las cuatro operaciones: conectarse, crear una tabla, insertar datos y consultar datos.

#include <stdio.h>
#include "mysql/mysql.h"

int main() {
    MYSQL      conn;
    int        res;
    MYSQL_RES *result;
    MYSQL_ROW  row;

    mysql_init(&conn);

    // Connection configuration
    char lindorm_addr[]     = "ld-uf6k8yqb741t3****-proxy-sql-lindorm-public.lindorm.rds.aliyuncs.com"; // LindormTable endpoint for MySQL
    char lindorm_user[]     = "user";    // LindormTable username
    char lindorm_password[] = "test";    // LindormTable password
    char database[]         = "default"; // Database to connect to
    int  lindorm_mysql_port = 33060;     // MySQL protocol port (fixed at 33060)

    // Create a connection
    if (!mysql_real_connect(
            &conn,               // Connection handle
            lindorm_addr,        // Host
            lindorm_user,        // Username
            lindorm_password,    // Password
            database,            // Default database
            lindorm_mysql_port,  // Port
            NULL,                // Unix socket (not used)
            0                    // Client flags (none)
    )) {
        fprintf(stderr, "Failed to connect: %s\n", mysql_error(&conn));
        mysql_close(&conn);
        exit(1);
    } else {
        printf("conect lindorm successfully\n");
    }

    // Create a table
    char create_table[] = "create table if not exists user_test(id int, name varchar,age int, primary key(id))";
    res = mysql_query(&conn, create_table);
    if (!res) {
        printf("create table successfully\n");
    } else {
        fprintf(stderr, "create table Error: %s\n", mysql_error(&conn));
        mysql_close(&conn);
        exit(1);
    }

    // Insert data using upsert syntax
    char insert_data[] = "upsert into user_test(id,name,age) values(3,'wangwu',23)";
    res = mysql_query(&conn, insert_data);
    if (!res) {
        printf("insert data successfully\n");
    } else {
        fprintf(stderr, "insert data Error: %s\n", mysql_error(&conn));
        mysql_close(&conn);
        exit(1);
    }

    // Query data
    char select_query[] = "select * from user_test";
    if (mysql_query(&conn, select_query) != 0) {
        fprintf(stderr, "select Error: %s\n", mysql_error(&conn));
        mysql_close(&conn);
        exit(1);
    }

    result = mysql_store_result(&conn);
    if (result == NULL) {
        fprintf(stderr, "store result Error: %s\n", mysql_error(&conn));
        mysql_close(&conn);
        exit(1);
    }

    while ((row = mysql_fetch_row(result)) != NULL) {
        printf("name is %s , ", row[0]);
        printf("age is %s\n", row[1]);
    }

    mysql_free_result(result);
    mysql_close(&conn);
    return 0;
}

Salida esperada:

conect lindorm successfully
create table successfully
insert data successfully
name is 3 , age is wangwu
LindormTable utiliza upsert into en lugar del estándar INSERT INTO para escribir filas. Esta es la sintaxis SQL de tabla ancha específica de LindormTable.

Pasos siguientes

  • View endpoints: obtenga el endpoint de VPC o de Internet de su instancia.

  • Manage users: restablezca contraseñas o gestione el acceso.