首批通过分布式安全可靠测评,为关键业务系统打造
MySQL Connector/C 连接 OB Cloud 云数据库示例程序
更新时间:2026-05-14 14:28:03
MySQL Connector/C 通常被称为 MySQL C API,它提供了一组 C 语言的函数和数据结构,允许开发人员使用 C/C++ 语言来连接、查询和管理 MySQL 数据库。这个 API 允许开发人员直接在其 C/C++ 应用程序中使用 MySQL 数据库。
本文将介绍如何使用 MySQL Connector/C (libmysqlclient) 驱动 和 OB Cloud 云数据库构建一个应用程序,实现创建表、插入数据和查询数据等基本操作。
前提条件
在安装使用 MySQL Connector/C (libmysqlclient) 前请确保设置了基本的数据库开发环境,要求如下:
- GCC 版本为 3.4.6 及以上,推荐使用 4.8.5 版本。
- CMake 版本为 2.8.12 及以上。
- 您已注册 OB Cloud 云数据库账号,并创建集群实例和 MySQL 兼容模式租户。详情请参见 创建集群实例 和 创建租户。
操作步骤
- 获取 OB Cloud 云数据库连接信息。
- 安装 MySQL Connector/C 驱动。
- 编写应用程序。
- 运行应用程序。
步骤一:获取数据库连接串
登录 OB Cloud 云数据库控制台。在实例列表页面,展开目标实例的信息,在目标租户下,选择 连接 > 获取连接串。
更多详细操作,请参见 获取连接串。
根据已创建的 OB Cloud 云数据库填写下面 URL 的对应信息。
obclient -h$host -P$port -u$user_name -p$password -D$database_name参数说明:
$host:提供 OB Cloud 云数据库连接地址,例如t********.********.oceanbase.cloud。$port:提供 OB Cloud 云数据库连接端口,默认为 3306。$database_name:需要访问的数据库名称。注意
连接租户的用户需要拥有该数据库的
CREATE、INSERT、DROP和SELECT权限。更多有关账号权限的信息,请参见 创建并管理账号。$user_name:提供访问数据库的账号。$password:提供账户密码。
示例如下:
obclient -h t********.********.oceanbase.cloud -P3306 -u mysql001 -p****** -Dtest
步骤二:安装 MySQL Connector/C 驱动
## 在 Ubuntu 系统上请使用下面的代码进行安装:
sudo apt-get install libmysqlclient-dev
## 在 CentOS 系统上请使用下面的代码进行安装:
sudo yum install mysql-devel
## 确认是否安装成功
mysql_config --version
步骤三:编写应用程序
打开你的文本编辑器,在文本编辑器中编辑示例 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", "passwd", "db", 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;
}
根据 步骤一:获取 OB Cloud 云数据库连接信息 中的信息修改项目文件 test.cc 中的数据库连接信息。
- 在 Linux 环境下,可以使用
vi test.cc或者vim test.cc命令编辑test.cc文件,修改文件中的数据库连接信息,确保与实际情况相符。
test.cc 文件中的数据库连接信息示例如下:
# 这部分连接信息需要修改为你所获取到连接串在的真实信息,示例如下
if (mysql_real_connect(conn, "t********.********.oceanbase.cloud", "mysql001", "********", "test", 3306, NULL, 0) == NULL) {
fprintf(stderr, "mysql_real_connect() failed\n");
mysql_close(conn);
return 1;
}
步骤四:编译应用程序
代码编辑完成后,可以通过如下命令进行编译。
gcc -o test test.cc `mysql_config --cflags --libs`
编译成功后,会生成可执行文件 test。
步骤五:运行应用程序
通过如下命令运行应用程序。
./test
输出结果如下,输出如下结果,说明数据库连接成功,示例语句正确执行。
1 小明 xiaoming@example.com