c++中利用数据库的常用函数

[复制链接]
发表于 2025-12-21 10:43:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
在C++中利用数据库,尤其是MySQL数据库,紧张通过MySQL提供的C API或MySQL Connector/C++库来实现。这些库提供了一系列的函数,使得开发者可以或许在C++应用步调中实验数据库的毗连、查询、更新、删除等利用。以下是C++中利用MySQL数据库的一些常用函数,以及它们的功能和利用方法。
毗连数据库

1. mysql_init

初始化一个MySQL毗连句柄,为后续的数据库利用做预备。
  1. [/code]cpp
  2. 深色版本
  3. [code]
  4. MYSQL *mysql_init(MYSQL *mysql);
复制代码
如果传入 NULL,函数会自动分配一个 MYSQL 对象。如果初始化失败,返回 NULL。
1
2. mysql_real_connect

实验创建到MySQL服务器的毗连。
  1. [/code]cpp
  2. 深色版本
  3. [code]
  4. MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned long client_flag);
复制代码

  • mysql: 由 mysql_init 初始化的句柄。
  • host: 毗连的MySQL服务器的地点。
  • user: 毗连的服务器的用户名。
  • passwd: 毗连的服务器的暗码。
  • db: 默认选择的数据库名称。
  • port: 毗连的服务器的端口,默以为3306。
  • unix_socket: 通讯管道或socket,通常设为 NULL。
  • client_flag: 客户端标志位,通常设为 0。
如果毗连乐成,返回句柄;失败返回 NULL。
1
设置字符集

3. mysql_set_character_set

设置当前客户端的字符集,以确保字符编码的划一性。
  1. [/code]cpp
  2. 深色版本
  3. [code]
  4. int mysql_set_character_set(MYSQL *mysql, const char *csname);
复制代码

  • mysql: 初始化完成的句柄。
  • csname: 字符集名称,如 "utf8"。
乐成返回 0,失败返回非零值。
1
实验SQL语句

4. mysql_query

实验一个SQL语句。
  1. [/code]cpp
  2. 深色版本
  3. [code]
  4. int mysql_query(MYSQL *mysql, const char *stmt_str);
复制代码

  • mysql: 初始化完成的句柄。
  • stmt_str: 要实验的SQL语句。
乐成返回 0,失败返回非零值。
1
5. mysql_real_query

类似于 mysql_query,但答应实验包罗二进制数据的语句。
  1. [/code]cpp
  2. 深色版本
  3. [code]
  4. int mysql_real_query(MYSQL *mysql, const char *stmt_str, unsigned long length);
复制代码

  • length: SQL语句的长度。
乐成返回 0,失败返回非零值。
9
处置惩罚查询结果

6. mysql_store_result

生存查询结果到当地。
  1. [/code]cpp
  2. 深色版本
  3. [code]
  4. MYSQL_RES *mysql_store_result(MYSQL *mysql);
复制代码

  • mysql: 初始化完成的句柄。
乐成返回结果集的指针,失败返回 NULL。
1
7. mysql_fetch_row

遍历结果集,获取单行数据。
  1. [/code]cpp
  2. 深色版本
  3. [code]
  4. MYSQL_ROW mysql_fetch_row(MYSQL_RES *result);
复制代码

  • result: 生存到当地的结果集地点。
返回值是一个 char ** 范例的指针,将每条数据做成了字符串指针数组,row[0] 为第一列,row[1] 为第二列,依此类推。
1
8. mysql_num_rows

获取结果会合的行数。
  1. [/code]cpp
  2. 深色版本
  3. [code]
  4. uint64_t mysql_num_rows(MYSQL_RES *result);
复制代码

  • result: 生存到当地的结果集地点。
返回结果会合数据的条数。
1
9. mysql_num_fields

获取结果会合列的个数。
  1. [/code]cpp
  2. 深色版本
  3. [code]
  4. unsigned int mysql_num_fields(MYSQL_RES *result);
复制代码

  • result: 生存到当地的结果集地点。
返回结果会合每条数据的列数。
1
整理资源

10. mysql_free_result

开释结果集资源。
  1. [/code]cpp
  2. 深色版本
  3. [code]
  4. void mysql_free_result(MYSQL_RES *result);
复制代码

  • result: 生存到当地的结果集地点。
没有返回值。
1
11. mysql_close

关闭数据库客户端毗连,烧毁句柄。
  1. [/code]cpp
  2. 深色版本
  3. [code]
  4. void mysql_close(MYSQL *mysql);
复制代码

  • mysql: 初始化完成的句柄。
没有返回值。
1
错误处置惩罚

12. mysql_error

获取MySQL接口实验错误的缘故原由。
  1. [/code]cpp
  2. 深色版本
  3. [code]
  4. const char *mysql_error(MYSQL *mysql);
复制代码

  • mysql: 初始化完成的句柄。
返回错误信息的字符串。
1
示例代码

以下是一个简单的示例,展示了怎样利用上述函数毗连MySQL数据库、实验查询并处置惩罚结果集。
  1. [/code]cpp
  2. 深色版本
  3. [code]
  4. #include <iostream>
  5. #include <mysql.h>
  6. int main() {
  7.     MYSQL *conn = mysql_init(NULL);
  8.     // 连接数据库
  9.     if (!mysql_real_connect(conn, "localhost", "root", "password", "testdb", 0, NULL, 0)) {
  10.         std::cerr << "Error connecting to database: " << mysql_error(conn) << std::endl;
  11.         return 1;
  12.     }
  13.     // 设置字符集
  14.     if (mysql_set_character_set(conn, "utf8") != 0) {
  15.         std::cerr << "Error setting character set: " << mysql_error(conn) << std::endl;
  16.         return 1;
  17.     }
  18.     // 执行查询
  19.     if (mysql_query(conn, "SELECT * FROM users")) {
  20.         std::cerr << "Error executing query: " << mysql_error(conn) << std::endl;
  21.         return 1;
  22.     }
  23.     // 保存查询结果
  24.     MYSQL_RES *result = mysql_store_result(conn);
  25.     if (result == NULL) {
  26.         std::cerr << "Error storing result: " << mysql_error(conn) << std::endl;
  27.         return 1;
  28.     }
  29.     // 获取结果集中的行数和列数
  30.     unsigned int num_fields = mysql_num_fields(result);
  31.     unsigned int num_rows = mysql_num_rows(result);
  32.     std::cout << "Number of rows: " << num_rows << std::endl;
  33.     std::cout << "Number of fields: " << num_fields << std::endl;
  34.     // 遍历结果集
  35.     MYSQL_ROW row;
  36.     while ((row = mysql_fetch_row(result))) {
  37.         for (unsigned int i = 0; i < num_fields; i++) {
  38.             std::cout << row[i] << "\t";
  39.         }
  40.         std::cout << std::endl;
  41.     }
  42.     // 释放结果集资源
  43.     mysql_free_result(result);
  44.     // 关闭数据库连接
  45.     mysql_close(conn);
  46.     return 0;
  47. }
复制代码
总结

通过上述函数,C++开发者可以方便地在应用步调中实现与MySQL数据库的交互。这些函数涵盖了从毗连数据库到实验查询、处置惩罚结果集再到整理资源的完备流程,为开发者提供了强大的工具来管理和利用数据库数据。
1
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表