MySQL Connector/C(またはMySQL C API)ドライバーは、C言語の関数とデータ構造のセットを提供し、開発者がC/C++言語を使用してMySQLデータベースに接続、クエリ、管理できるようにします。また、開発者はC/C++アプリケーション内で直接MySQLデータベースを利用することも可能です。
本記事では、C++を例に、MySQL Connector/Cドライバーを使用してOB Cloudに接続し、テーブルの作成、データの挿入、データのクエリなどの基本的な操作を実現するアプリケーションを構築する方法を紹介します。
前提条件
- オペレーティングシステムがCentOSまたはUbuntuであること。
- g++コンパイラがインストール済みであること。
- OB Cloudデータベースアカウントに登録されており、クラスタインスタンスとOB Cloud MySQLテナントが作成されていること。詳細については、クラスタインスタンスの作成およびテナントの作成をご参照ください。
操作手順
ステップ1:OB Cloudデータベース接続文字列を取得する
OB Cloudコンソールにログインします。クラスターリストページで、対象クラスターの情報を展開し、対象テナントで、**接続**をクリックします。

ポップアップウィンドウで、**パブリックネットワークを使用**を選択します。
**パブリックIPアドレスを使用してデータベースに接続**ページで以下の設定を完了し、接続文字列を生成します:
パラメータ説明IPアドレスの追加 追加をクリックし、エグジットIPをホワイトリストに追加します。 証明書のダウンロード (オプション)証明書をダウンロードをクリックし、CA証明書をダウンロードして認証を完了します。 テナントへの接続 データベース ドロップダウンリストをクリックした後、+ データベースの作成をクリックし、プロンプトに従ってデータベースの作成を完了します。 アカウント ドロップダウンリストをクリックした後、+ アカウントの作成をクリックし、プロンプトに従ってアカウントの作成を完了します。 接続方式 接続方式としてMySQL CLIを選択します。 注意
アカウント作成後、作成時に生成されたパスワードを適切に保管してください。
ステップ2:MySQL Connector/Cドライバーをインストールする
以下のコマンドを実行して、ドライバーをインストールします。
Ubuntuシステム:
sudo apt-get install libmysqlclient-devCentOSシステム:
sudo yum install mysql-devel
以下のコマンドを実行して、インストールが成功したかどうか確認します。
mysql_config --version
ステップ3:アプリケーションを作成する
テキストエディタを開き、サンプルの
test.ccコードファイルを編集して保存します。内容は以下のとおりです:#include <stdio.h> #include <stdlib.h> #include <mysql/mysql.h> int main() { MYSQL *conn = mysql_init(NULL); // MySQL接続の初期化 if (conn == NULL) { fprintf(stderr, "mysql_init() failed\n"); return 1; } // MySQLデータベースサーバーへの接続 if (mysql_real_connect(conn, "{host}", "{user}", "{password}", "{database}", {port}, NULL, 0) == NULL) { fprintf(stderr, "mysql_real_connect() failed\n"); mysql_close(conn); return 1; } // ユーザーテーブルの作成 if (mysql_query(conn, "CREATE TABLE IF NOT EXISTS users (id INT AUTO_INCREMENT, name VARCHAR(255), email VARCHAR(255), PRIMARY KEY(id))") != 0) { fprintf(stderr, "Error in creating table: %s\n", mysql_error(conn)); mysql_close(conn); return 1; } // データの挿入 if (mysql_query(conn, "INSERT INTO users (name, email) VALUES ('小明', 'xiaoming@example.com')") != 0) { fprintf(stderr, "Error in inserting data: %s\n", mysql_error(conn)); mysql_close(conn); return 1; } // データのクエリ if (mysql_query(conn, "SELECT * FROM users") == 0) { MYSQL_RES *result = mysql_store_result(conn); if (result != NULL) { int num_fields = mysql_num_fields(result); MYSQL_ROW row; while ((row = mysql_fetch_row(result))) { for (int i = 0; i < num_fields; i++) { printf("%s ", row[i] ? row[i] : "NULL"); } printf("\n"); } mysql_free_result(result); } else { fprintf(stderr, "Error in retrieving result: %s\n", mysql_error(conn)); } } else { fprintf(stderr, "Error in selecting data: %s\n", mysql_error(conn)); } // テーブルの削除 if (mysql_query(conn, "DROP TABLE IF EXISTS users") != 0) { fprintf(stderr, "Error in dropping table: %s\n", mysql_error(conn)); mysql_close(conn); return 1; } mysql_close(conn); // 接続を閉じる return 0; }ステップ1:OB Cloudデータベース接続文字列を取得するで取得した接続文字列を使用して、ファイル
test.cc内のコードにおいて、MySQLデータベースサーバーへの接続部分を修正し、保存します。例:// MySQLデータベースサーバーへの接続 if (mysql_real_connect(conn, "t5********.aws-ap-southeast-1.oceanbase.cloud", "test", "12*****!", "dbtest", 3306, NULL, 0) == NULL) { fprintf(stderr, "mysql_real_connect() failed\n"); mysql_close(conn); return 1; }- host:接続文字列の
-hパラメータから取得したOB Cloudデータベースの接続アドレスです。 - user:接続文字列の
-uパラメータから取得したアカウント名です。 - password:接続文字列の
-pパラメータから取得したアカウントのパスワードです。 - database:接続文字列の
-Dパラメータから取得した、アクセスするデータベース名です。 - port:接続文字列の
-Pパラメータから取得したOB Cloudデータベースの接続ポートです。
- host:接続文字列の
ステップ4:アプリケーションのコンパイル
コードファイルの編集が完了したら、以下のコマンドでコンパイルします:
g++ -o test test.cc `mysql_config --cflags --libs`
コンパイルが成功すると、実行ファイル test が生成されます。
ステップ5:アプリケーションを実行する
以下のコマンドでアプリケーションを実行します:
./test
以下の結果が出力されれば、データベースへの接続に成功し、サンプルアプリケーションが正しく実行されたことを示します。
1 小明 xiaoming@example.com