使用 MySQL C API 进行数据库开发

目录

一 安装 MySQL 客户端库

二 MySQL C API 基本概念        

三 编译命令


一 安装 MySQL 客户端库

//搜索与 MySQL 客户端库相关的包(这一步是可选的,但有助于确认包名)
sudo apt search mysqlclient
//安装 MySQL C API 的开发文件
sudo apt install libmysqlclient_dev

头文件:/usr/include/mysql 库文件: /usr/lib/mysql/

二 MySQL C API 基本概念        

  • MYSQL: 结构体,表示到 MySQL 服务器的连接。
  • MYSQL_RES: 结构体,代表 SQL 查询的结果集。
  • MYSQL_ROW: 指向行的指针,从 MYSQL_RES 中获得的一行数据。
  • MYSQL_FIELD: 结构体,包含关于表中列的信息,如名称、类型等。

基本函数

  1. mysql_init(MYSQL *mysql)
    • 初始化一个 MYSQL 结构体实例,为连接数据库做准备。如果 mysql 参数为 NULL,函数将分配一个新的 MYSQL 结构体并返回其指针;否则,它将初始化提供的 MYSQL 结构体。
  2. 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 数据库服务器建立连接。需要提供服务器的主机名、用户名、密码、要连接的数据库名、端口号(如果不是默认端口3306)、Unix 套接字路径(如果适用)以及客户端标志。
  3. mysql_close(MYSQL *mysql)
    • 关闭与 MySQL 服务器的连接,并释放与 MYSQL 结构体相关联的所有资源。
  4. mysql_query(MYSQL *mysql, const char *query)
    • 向 MySQL 服务器发送一个 SQL 查询。如果查询成功,它将返回 0;如果失败,则返回非零值。注意,这个函数并不直接返回结果集;它只是执行查询并可能产生结果集,该结果集需要通过其他函数来获取。
  5. mysql_store_result(MYSQL *mysql)
    • 对于 SELECT、SHOW、DESCRIBE 或 EXPLAIN 语句,这个函数检索完整的结果集并将其存储在内存中。它返回一个指向 MYSQL_RES 结构体的指针,该结构体包含了结果集。如果查询没有产生结果集(如 INSERT、UPDATE、DELETE),则此函数返回 NULL
  6. mysql_free_result(MYSQL_RES *result)
    • 释放 mysql_store_result() 或 mysql_use_result() 返回的结果集所占用的内存。在获取并处理了结果集中的所有数据后,应该调用此函数来避免内存泄漏。
  7. mysql_fetch_row(MYSQL_RES *result)
    • 从结果集中检索下一行。它返回一个指向 MYSQL_ROW 的指针,该指针是一个字符串数组,包含了当前行的列值。如果没有更多行可供检索,则返回 NULL
  8. mysql_fetch_field(MYSQL_RES *result)
    • 返回指向 MYSQL_FIELD 结构体的指针,该结构体包含了结果集中当前字段的信息(如字段名、类型等)。每次调用都会返回结果集中的下一个字段信息,直到没有更多字段为止。如果结果集为空或所有字段信息都已被检索,则返回 NULL。注意,这个函数通常与 mysql_fetch_fields() 结合使用,后者返回包含所有字段信息的 MYSQL_FIELD 结构体数组。

三 编译命令

gcc my.c -o my -L /usr/lib/mysql -lmysqlclient

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值