すべてのプロダクト
Search
ドキュメントセンター

Lindorm:C API を使用したアプリケーション開発

最終更新日:Feb 04, 2026

このトピックでは、MySQL 用の C API を使用して C または C++ アプリケーションを開発する方法について説明します。

前提条件

  • インスタンスで MySQL 互換機能が有効になっていること。 詳細については、「MySQL 互換機能を有効にする」をご参照ください。

  • ご利用のクライアントの IP アドレスが Lindorm インスタンスのホワイトリストに追加されていること。 詳細については、「ホワイトリストの設定」をご参照ください。

操作手順

  1. MySQL 用 C API の依存関係をインストールします。 次のコマンドは、CentOS に MySQL 用 C API の依存関係をインストールする方法の例です。

  2. yum install mysql-devel
  3. 接続パラメーターを設定します。

    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;

    パラメーター

    パラメーター

    説明

    lindorm_addr

    MySQL 互換の LindormTable エンドポイント。 取得方法の詳細については、「エンドポイントの表示」をご参照ください。

    重要
    • アプリケーションが ECS インスタンスにデプロイされている場合は、VPC を使用して Lindorm インスタンスに接続することを推奨します。 これにより、セキュリティが向上し、ネットワーク遅延が低減します。

    • アプリケーションがオンプレミスでデプロイされている場合、パブリックネットワーク経由で Lindorm インスタンスに接続する前に、コンソールでパブリックネットワークアクセスを有効にします。この操作を行うには、コンソールで Database Connections > Wide Table Engine を選択します。Wide Table Engine タブで、Enable Public Endpoint をクリックします。

    • VPC から Lindorm インスタンスにアクセスするには、lindorm_addr を MySQL 互換の VPC アドレスに設定します。パブリックネットワークから Lindorm インスタンスにアクセスするには、lindorm_addr を MySQL 互換の Internet アドレスに設定します。

    lindorm_user

    パスワードを忘れた場合は、LindormTable のクラスター管理システムでパスワードを変更できます。 詳細については、「ユーザーの管理」をご参照ください。

    lindorm_password

    database

    接続するデータベースの名前。 デフォルトでは、クライアントは default という名前のデータベースに接続されます。

    lindorm_mysql_port

    MySQL を使用して LindormTable にアクセスするためのポート。 このパラメーターの値は 33060 に固定されています。

  4. LindormTable への接続を作成して、ワイドテーブル SQL 構文を使用できます。 次の例は、テーブルを作成する方法を示しています。

        // 接続を作成します。
        if (!mysql_real_connect(&conn,lindorm_addr,lindorm_user,lindorm_password,database,lindorm_mysql_port,NULL,0)) {
            printf("Failed to connect to database: Error: %s\n",
                    mysql_error(&conn));
            exit(1);
        } else {
            printf("conect lindorm successfully\n");
        }
    
    
        // テーブルを作成します。
        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 {
            printf("create table Error: %s\n", mysql_error(&conn));
            exit(1);
        }
  5. demo.c ファイル内のコードをコンパイルするには、次のコマンドを実行します。

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

完全な例

完全なサンプルコードを次に示します。

#include <stdio.h>
#include "mysql/mysql.h"
int main(){
    MYSQL conn;
    int res;
    MYSQL_RES * result;
    MYSQL_ROW row;
    mysql_init(&conn);

    // 接続設定。
    char lindorm_addr[] = "ld-uf6k8yqb741t3****-proxy-sql-lindorm-public.lindorm.rds.aliyuncs.com"; // MySQL 互換の LindormTable エンドポイント
    char lindorm_user[] = "user"; // LindormTable のユーザー名
    char lindorm_password[] = "test"; // LindormTable のパスワード
    char database[] = "default"; // 接続するデータベース名
    int lindorm_mysql_port = 33060; // LindormTable の MySQL プロトコルポート (33060 に固定)

    // 接続を作成します。
    if (!mysql_real_connect(&conn,lindorm_addr,lindorm_user,lindorm_password,database,lindorm_mysql_port,NULL,0)) {
        printf("Failed to connect to database: Error: %s\n",
                mysql_error(&conn));
        exit(1);
    } else {
        printf("conect lindorm successfully\n");
    }


    // テーブルを作成します。
    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 {
        printf("create table Error: %s\n", mysql_error(&conn));
        exit(1);
    }

    // データを挿入します。
    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 {
        printf("insert data Error: %s\n", mysql_error(&conn));
        exit(1);
    }

    // データをクエリします。
    char select_query[] = "select * from user_test";
    if (mysql_query(&conn, select_query) != 0) {
        printf("select Error: %s\n", mysql_error(&conn));
        exit(1);
    } else {
        if ((result = mysql_store_result(&conn)) == NULL) {
            printf("store result Error: %s\n", mysql_error(&conn));
            exit(1);
        }
        else {
            while ((row = mysql_fetch_row(result)) != NULL) {
                printf("name is %s , ", row[0]);
                printf("age is %s\n", row[1]);
            }
        }
    }

    return 0;
}

次の結果が返されます。

conect lindorm successfully
create table successfully
insert data successfully
name is 3 , age is wangwu