限时福利领取


1. 准备工作:MySQL客户端库引入

在开始使用C/C++访问MySQL数据库前,我们需要做好两项准备:

  1. 创建专用数据库账号
  2. 安装必要的开发库

首先创建一个本地访问账号:

CREATE USER 'connector'@'localhost' IDENTIFIED BY 'your_password';

然后为该账号授权:

GRANT ALL ON your_database.* TO 'connector'@'localhost';

数据库账号创建示意图

安装开发库有两种方式:

  1. 从MySQL官网下载对应平台的开发包
  2. 通过yum直接安装(推荐)
yum install -y mysql-community-server
# 安装开发头文件
yum install -y mysql-devel

2. C/C++连接MySQL基础流程

连接MySQL的基本流程分为三步:

  1. 初始化MySQL对象
  2. 建立数据库连接
  3. 使用完毕后关闭连接
#include <mysql/mysql.h>

int main() {
    // 1. 初始化
    MYSQL* conn = mysql_init(nullptr);

    // 2. 连接数据库
    if(!mysql_real_connect(conn, "localhost", "connector", 
                          "your_password", "your_database", 
                          3306, nullptr, 0)) {
        // 错误处理
    }

    // 3. 关闭连接
    mysql_close(conn);
    return 0;
}

连接流程示意图

3. 执行SQL语句的实践技巧

增删改操作

使用mysql_query()函数执行SQL语句:

string sql = "INSERT INTO user (name,age) VALUES ('Tom',20)";
int ret = mysql_query(conn, sql.c_str());
if(ret == 0) {
    cout << "执行成功" << endl;
}

增删改执行结果

查询操作

查询操作相对复杂,需要处理结果集:

MYSQL_RES* result = mysql_store_result(conn);
if(result) {
    // 获取行列数
    int rows = mysql_num_rows(result);
    int cols = mysql_num_fields(result);

    // 获取列名
    MYSQL_FIELD* fields = mysql_fetch_fields(result);

    // 遍历结果
    while(MYSQL_ROW row = mysql_fetch_row(result)) {
        for(int i=0; i<cols; i++) {
            cout << row[i] << "\t";
        }
        cout << endl;
    }

    // 释放结果集
    mysql_free_result(result);
}

查询结果处理

4. 中文乱码解决方案

当遇到中文乱码问题时,需要在连接后设置字符集:

mysql_set_character_set(conn, "utf8");

这样就能正确处理中文数据了。

中文处理效果

5. 图形化工具MySQL Workbench

5.1 安装与配置

  1. 从MySQL官网下载对应版本的Workbench
  2. 创建远程访问账号:
CREATE USER 'workbench'@'%' IDENTIFIED BY 'password';
GRANT ALL ON database.* TO 'workbench'@'%';

5.2 连接数据库

在Workbench中添加新连接,填写: - 连接名称 - 主机地址 - 端口 - 用户名 - 密码

连接配置界面

5.3 基本使用

  • 执行SQL:编写SQL后点击闪电图标
  • 可视化操作:直接编辑表格数据
  • 导出SQL:可将操作保存为.sql文件

Workbench操作界面

通过以上方法,你可以灵活选择适合的MySQL访问方式,无论是编程访问还是使用图形化工具都能得心应手。

Logo

音视频技术社区,一个全球开发者共同探讨、分享、学习音视频技术的平台,加入我们,与全球开发者一起创造更加优秀的音视频产品!

更多推荐