C++使用MySQL API连接数据库完整流程与示例

小林子
小林子
发布时间:2026-10-13 | 2人浏览过
原创

在C++开发中处理结构化数据时,常需直接调用MySQL原生API。通过包含mysql/mysql.h并正确链接客户端库,开发者可实现从建立会话到执行增删改查的全流程控制。本文将解析相关类结构与关键函数的用法。

环境准备与头文件集成

在开始编写代码前,需确保开发环境中已安装MySQL Client库。在代码层面,必须引入对应的接口定义文件。标准的做法是显式声明所需的输入输出流与字符串处理库:

#include <mysql/mysql.h>
#include <stdio.h>
#include<iostream>
#include<iomanip>
using namespace std;

此外,项目中通常需要定义全局的数据库会话指针与结果集变量,以便在不同业务模块间共享:

MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;

建立安全连接

所有数据库操作的基础在于成功获取一个有效的MYSQL句柄。这一过程分为两步:首先初始化句柄,随后填充具体的连接地址、用户凭据及目标数据库名。

第1步:会话初始化和认证

目的:确保程序能正确指向数据库服务器并验证身份。

  • 入口:位于main()或初始化函数首部。
  • 动作:调用mysql_init(NULL)分配内存,紧接着执行mysql_real_connect()。
  • 重要参数:
    - Host: "localhost"
    - User/Password: 测试环境下常用"root"。
    - Database: 指定的具体库名。

完成判断:检查mysql_real_connect返回值。若为NULL,通过mysql_error(conn)打印错误日志并终止进程。

int main() {
  conn = mysql_init(NULL);
  if (!mysql_real_connect(conn, "localhost",
     "root", "root", "abc", 0, NULL, 0)) {
   fprintf(stderr, "%s\n", mysql_error(conn));
   return -1;
  }
  // 设置字符编码防止乱码
  mysql_query(conn,"set names utf8");
  
  // ... 后续操作 ...
}

数据结构映射与封装

为了提高代码的可维护性,建议将表字段映射为C++类对象。以下结构体定义了表结构的内存表示:

class people
{
public:
  char name[20];
  int pid;
  int type;
  char phone[30];

public:
  void setall();
};

void people::setall()
{
  // 接收用户标准输入并填充对象属性
  cin >> pid >> name >> type >> phone;
}

核心增删改查(CRUD)实现

第2步:执行插入操作 (INSERT)

目的:向表中写入一条新记录。

  • 动作:构造sprintf拼接SQL语句,传入mysql_query()。
  • 观察:控制台输出“添加成功”即视为完成。
void save(people a)
{
  char sql[1000];
  sprintf(sql,"insert into student values(%d,'%s',%d,'%s')",
    a.pid, a.name, a.type, a.phone);
  
  if(mysql_query(conn, sql))
  {
      printf("添加失败: (%s)\n",mysql_error(conn));
  } else {
      printf("添加成功!\n");
  }
}

第3步:执行更新与删除操作

目的:根据主键修改或删除现有行。这两类操作的逻辑与插入类似,差异仅在于SQL模板。

更新示例逻辑:构建带有where子句的update语句。

删除示例逻辑:构建带有where子句的delete from语句。在执行任何破坏性操作前,务必确认条件准确无误。

第4步:执行查询与数据读取 (SELECT)

目的:拉取数据并在屏幕展示。由于结果集通常较大,需先使用mysql_use_result()开启游标遍历。

  • 动作:逐行调用mysql_fetch_row(res)。
  • 参数访问:数组下标对应Select列表的顺序(row[0], row[1]...)。
void show()
{
   res = mysql_use_result(conn);
   while ((row = mysql_fetch_row(res)) != NULL){
     cout<

资源释放与总结

当所有业务逻辑执行完毕(或在检测到致命错误退出时),必须关闭连接以释放服务器端资源。这需要在程序出口处调用mysql_close(conn)。

以上就是C++使用MySQL API连接并操作数据库的详细内容,更多关于C++数据库编程的资料请关注本站其它相关文章!
相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表