〔 MySQL 〕 C接口使用

news/2024/12/17 20:17:05/

一、准备工作

  1. 确保MySQL服务运行正常
  2. 下载Connector/C库

二、库文件结构

  1. include目录
  2. lib目录

三、验证库文件

  1. 示例代码
  2. 编译命令

四、环境变量设置

五、MySQL接口介绍

  1. 初始化MySQL
  2. 连接数据库
    • 设置默认字符集
  3. 发送MySQL命令
  4. 获取执行结果
    • 获取结果行数
    • 获取结果列数
    • 获取列名
    • 获取结果内容
  5. 关闭MySQL连接
  6. 事务操作

MySQL C接口使用

准备工作

  1. 确保MySQL服务运行正常。
  2. 从MySQL官网下载适合自己平台的Connector/C库。

库文件结构

  • include 目录包含所有头文件,提供方法声明。
  • lib 目录包含库文件,提供方法实现。

验证库文件

#include <stdio.h>
#include <mysql.h>int main() {printf("mysql client Version: %s\n", mysql_get_client_info());return 0;
}

编译命令:

gcc -o test test.c -I./include -L./lib -lmysqlclient

环境变量设置

export LD_LIBRARY_PATH=./lib

MySQL接口介绍

初始化MySQL

MYSQL *mysql_init(MYSQL *mysql);

示例:

MYSQL *mfp = mysql_init(NULL);

连接数据库

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 clientflag);

设置连接的默认字符集为utf8:

mysql_set_character_set(myfd, "utf8");

发送MySQL命令

int mysql_query(MYSQL *mysql, const char *q);

获取执行结果

MYSQL_RES *mysql_store_result(MYSQL *mysql);

获取结果行数:

my_ulonglong mysql_num_rows(MYSQL_RES *res);

获取结果列数:

unsigned int mysql_num_fields(MYSQL_RES *res);

获取列名:

MYSQL_FIELD *mysql_fetch_fields(MYSQL_RES *res);

获取结果内容:

MYSQL_ROW mysql_fetch_row(MYSQL_RES *result);

关闭MySQL连接

void mysql_close(MYSQL *sock);

事务操作

my_bool STDCALL mysql_autocommit(MYSQL *mysql, my_bool auto_mode);
my_bool STDCALL mysql_commit(MYSQL *mysql);
my_bool STDCALL mysql_rollback(MYSQL *mysql);

以上笔记涵盖了使用C语言连接MySQL的基本步骤和接口介绍,包括初始化、连接、查询、获取结果和关闭连接等操作。


http://www.ppmy.cn/news/1555945.html

相关文章

爬虫学习案例4

爬取猪八戒网站数据&#xff1a;2024-12-12 使用xpath解析元素&#xff0c;安装依赖库 pip install lxml使用selenium步骤我的上篇博客有提到&#xff0c;这里就不重复了 selenium使用博客导航 # 安装pip install lxml,使用xpath from lxml import etree import time from s…

Redis Java 集成到 Spring Boot

Hi~&#xff01;这里是奋斗的明志&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f331;&#x1f331;个人主页&#xff1a;奋斗的明志 &#x1f331;&#x1f331;所属专栏&#xff1a;Redis &#x1f4da;本系列文章为个人学习笔…

信息化基础知识——电子商务(山东省大数据职称考试)

大数据分析应用-初级 第一部分 基础知识 一、大数据法律法规、政策文件、相关标准 二、计算机基础知识 三、信息化基础知识 四、密码学 五、大数据安全 六、数据库系统 七、数据仓库. 第二部分 专业知识 一、大数据技术与应用 二、大数据分析模型 三、数据科学 电子商务 大数…

记一次mysql字符集编码问题导致查询时间过长问题

数据表 rm_ic.audit_summary_2024_05_20 该表大概有1200w数据&#xff0c;有个字段为ids 不是唯一的&#xff0c;已建索引 audit_ids_idx create table rm_ic.test1 ( id varchar(19) primary key not null comment id, create_time datetime default CURRENT_TIMESTAMP ); cre…

ReactPress最佳实践—搭建导航网站实战

Github项目地址&#xff1a;https://github.com/fecommunity/easy-blog 欢迎Star。 近期&#xff0c;阮一峰在科技爱好者周刊第 325 期中推荐了一款开源工具——ReactPress&#xff0c;ReactPress一个基于 Next.js 的博客和 CMS 系统&#xff0c;可查看 demo站点。&#xff08;…

Scala泛型应用场景

Scala中的泛型&#xff08;Generics&#xff09;是一种强大的工具&#xff0c;允许开发者编写可重用的代码&#xff0c;同时保持类型安全。泛型在Scala中有多种应用场景&#xff0c;以下是一些常见的应用场景&#xff1a; 集合类&#xff1a; Scala的集合类&#xff08;如List…

UE4_控件蓝图_制作3D生命血条

一&#xff1a;效果图如下&#xff1a; 二、实现步骤&#xff1a; 1、新建敌人 右键蓝图类 选择角色&#xff0c; 重命名为BP_Enemytest。 双击打开&#xff0c;配置敌人网格体 修改位置及朝向 效果如下&#xff1a; 选择合适的动画蓝图类&#xff1a; 人物就有了动作&#x…

深入了解IPv6——光猫相关设定:DNS来源、DHCPv6服务、前缀来源等

光猫IPv6设置后的效果对比图&#xff1a; 修改前&#xff1a; 修改后&#xff1a; 一、DNS来源 1. 网络连接 来源&#xff1a; 从上游网络&#xff08;如运营商&#xff09;获取 IPv6 DNS 信息&#xff0c;通过 PPPoE 或 DHCPv6 下发。 特点&#xff1a; DNS 服务器地址直…