このトピックでは、MySQL 用の C API を使用して C または C++ アプリケーションを開発する方法について説明します。
前提条件
インスタンスで MySQL 互換機能が有効になっていること。 詳細については、「MySQL 互換機能を有効にする」をご参照ください。
ご利用のクライアントの IP アドレスが Lindorm インスタンスのホワイトリストに追加されていること。 詳細については、「ホワイトリストの設定」をご参照ください。
操作手順
MySQL 用 C API の依存関係をインストールします。 次のコマンドは、CentOS に MySQL 用 C API の依存関係をインストールする方法の例です。
接続パラメーターを設定します。
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 インスタンスに接続する前に、コンソールでパブリックネットワークアクセスを有効にします。この操作を行うには、コンソールで を選択します。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 に固定されています。
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); }demo.cファイル内のコードをコンパイルするには、次のコマンドを実行します。gcc -o a.out $(mysql_config --cflags) demo.c $(mysql_config --libs) ./a.out
yum install mysql-devel完全な例
完全なサンプルコードを次に示します。
#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