---
title: "MySQL Connector/C 连接 OceanBase 数据库示例程序 - OceanBase 数据库 V4.3.1 | OceanBase 文档中心"
description: MySQL Connector/C 连接 OceanBase 数据库示例程序 MySQL Connector/C 通常被称为 MySQL C API，它提供了一组 C 语言的函数和数据结构，允许开发人员使用 C/C++ 语言来连接、查询和管理MySQL数据库。这个 API 允许开发人员直接在其 C/C++ 应用程序中…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.3.1

# MySQL Connector/C 连接 OceanBase 数据库示例程序

更新时间：2026-04-10 11:58:00

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.3.1/zh-CN/300.develop/100.application-development-of-mysql-mode/200.sample-program-of-mysql-mode/300.c-of-mysql-mode/100.connect-to-the-oceanbase-database-through-mysql-connector-c-of-mysql-mode.md)  

MySQL Connector/C 通常被称为 MySQL C API，它提供了一组 C 语言的函数和数据结构，允许开发人员使用 C/C++ 语言来连接、查询和管理MySQL数据库。这个 API 允许开发人员直接在其 C/C++ 应用程序中使用MySQL数据库。

本文将介绍如何使用 MySQL Connector/C (libmysqlclient) 驱动 和 OceanBase 数据库构建一个应用程序，实现创建表、插入数据和查询数据等基本操作。

## 前提条件

在安装使用 MySQL Connector/C (libmysqlclient) 前请确保设置了基本的数据库开发环境，要求如下：

- GCC 版本为 3.4.6 及以上，推荐使用 4.8.5 版本。
 - CMake 版本为 2.8.12 及以上。
 - 您已安装 OceanBase 数据库并且创建了 MySQL 模式租户。

## 操作步骤

1. 获取 OceanBase 数据库连接信息。
 2. 安装 MySQL Connector/C 驱动。
 3. 编写应用程序。
 4. 运行应用程序。

### 步骤一：获取数据库连接串

联系 OceanBase 数据库部署人员或者管理员获取相应的数据库连接串，例如：

```
obclient -h$host -P$port -u$user_name -p$password -D$database_name

```

**参数说明：**

- `$host`：提供 OceanBase 数据库连接 IP。OceanBase 数据库代理（OceanBase Database Proxy，ODP）连接方式使用的是一个 ODP 地址；直连方式使用的是 OBServer 节点的 IP 地址。
 - `$port`：提供 OceanBase 数据库连接端口。ODP 连接的方式默认是 `2883`，在部署 ODP 时可自定义；直连方式默认是 `2881`，在部署 OceanBase 数据库时可自定义。
 - `$database_name`：需要访问的数据库名称。

  #### 注意

  连接租户的用户需要拥有该数据库的 `CREATE`、`INSERT`、`DROP` 和 `SELECT` 权限。更多有关用户权限的信息，请参见 [MySQL 模式下的权限分类](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000821411)。
 - `$user_name`：提供租户的连接账户。ODP 连接的常用格式：`用户名@租户名#集群名` 或者 `集群名:租户名:用户名`；直连方式格式：`用户名@租户名`。
 - `$password`：提供账户密码。

更多连接串的信息，请参见 [通过 OBClient 连接 OceanBase 租户](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000818872)。

**示例如下：**

```shell
obclient -hxxx.xxx.xxx.xxx -P2881 -utest_user001@mysql001 -p****** -Dtest

```

### 步骤二：安装 MySQL Connector/C 驱动

```shell
## 在 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;
}

```

根据 **步骤一：获取 OceanBase 数据库连接信息** 中的信息修改项目文件 `test.cc` 中的数据库连接信息。

- 在 Linux 环境下，可以使用 `vi test.cc` 或者 `vim test.cc` 命令编辑 `test.cc` 文件，修改文件中的数据库连接信息，确保与实际情况相符。

**`test.cc` 文件中的数据库连接信息示例如下：**

```c
# 这部分连接信息需要修改为你所获取到连接串在的真实信息，示例如下
if (mysql_real_connect(conn, "10.10.10.1", "test_user001@mysql001", "test", "db", 2881, NULL, 0) == NULL) {
        fprintf(stderr, "mysql_real_connect() failed\n");
        mysql_close(conn);
        return 1;
    }

```

### 步骤四：编译应用程序

代码编辑完成后，可以通过如下命令进行编译。

```shell
gcc -o test test.cc `mysql_config --cflags --libs`

```

编译成功后，会生成可执行文件 `test`。

### 步骤五：运行应用程序

通过如下命令运行应用程序。

```shell
./test

```

输出结果如下，输出如下结果，说明数据库连接成功，示例语句正确执行。

```shell
1 小明 xiaoming@example.com

```

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
