学校网站建设考评办法,WordPress二级栏目代码,网上商城网站设计,马鞍山网站设计目录
引言
一. MySQL C API简介
二. MySQL C API核心函数
2.1 初始化和连接
2.2 配置和执行
2.3 处理结果
2.4 清理和关闭
2.5 错误处理
三. MySQL使用过程
四. 实现CRUD操作
4.1 创建数据库并建立表
编辑
4.2 添加数据#xff08;Create#xff09;
编辑 …目录
引言
一. MySQL C API简介
二. MySQL C API核心函数
2.1 初始化和连接
2.2 配置和执行
2.3 处理结果
2.4 清理和关闭
2.5 错误处理
三. MySQL使用过程
四. 实现CRUD操作
4.1 创建数据库并建立表
编辑
4.2 添加数据Create
编辑
编辑
编辑4.3 修改数据Update
编辑
4.4 删除数据Delete
4.5 查询数据Retrieve
结语 引言 在软件开发中数据库是存储、检索和操作数据的关键组件。MySQL作为一种广泛使用的数据库系统提供了丰富的API接口允许开发者通过不同的编程语言与其交互。本文将详细介绍如何使用MySQL的C语言API来实现数据库的基本增删改查CRUD操作。 一. MySQL C API简介 MySQL C API是一组函数它们提供了对MySQL服务器的底层访问。通过这个API开发者可以在C语言程序中执行SQL语句并处理结果。 二. MySQL C API核心函数
// Mysql操作句柄初始化
MYSQL *mysql_init(MYSQL *mysql);
// 参数为空则动态申请句柄空间进⾏初始化
// 失败返回NULL// 连接mysql服务器
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--初始化完成的句柄
// host---连接的mysql服务器的地址
// user---连接的服务器的⽤⼾名
// passwd-连接的服务器的密码
// db ----默认选择的数据库名称
// port---连接的服务器的端⼝ 默认0是3306端⼝
// unix_socket---通信管道⽂件或者socket⽂件通常置NULL
// client_flag---客⼾端标志位通常置0
// 返回值成功返回句柄失败返回NULL// 设置当前客⼾端的字符集
int mysql_set_character_set(MYSQL *mysql, const char *csname)// mysql--初始化完成的句柄// csname--字符集名称通常utf8// 返回值成功返回0 失败返回⾮0// 选择操作的数据库
int mysql_select_db(MYSQL *mysql, const char *db)// mysql--初始化完成的句柄// db-----要切换选择的数据库名称// 返回值成功返回0 失败返回⾮0// 执⾏sql语句
int mysql_query(MYSQL *mysql, const char *stmt_str)// mysql--初始化完成的句柄// stmt_str--要执⾏的sql语句// 返回值成功返回0 失败返回⾮0// 保存查询结果到本地
MYSQL_RES *mysql_store_result(MYSQL *mysql)// mysql--初始化完成的句柄// 返回值成功返回结果集的指针 失败返回NULL// 获取结果集中的⾏数与列数
uint64_t mysql_num_rows(MYSQL_RES *result)//result--保存到本地的结果集地址// 返回值结果集中数据的条数// 获取结果中列的个数
unsigned int mysql_num_fields(MYSQL_RES *result)// result--保存到本地的结果集地址// 返回值结果集中每⼀条数据的列数// 遍历结果集
MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)// result--保存到本地的结果集地址// 返回值实际上是⼀个char **的指针将每⼀条数据做成了字符串指针数组 row[0]-第0列row[1] -第1列// 并且这个接⼝会保存当前读取结果位置每次获取的都是下⼀条数据// 释放结果集
void mysql_free_result(MYSQL_RES *result)// result--保存到本地的结果集地址// 返回值void// 关闭数据库客⼾端连接销毁句柄
void mysql_close(MYSQL *mysql)// 获取mysql接⼝执⾏错误原因
const char *mysql_error(MYSQL *mysql)
2.1 初始化和连接 mysql_init初始化MySQL操作句柄。mysql_real_connect使用给定的参数连接到MySQL服务器。 2.2 配置和执行 mysql_set_character_set设置客户端字符集。mysql_select_db选择要操作的数据库。mysql_query执行SQL语句。 2.3 处理结果 mysql_store_result保存查询结果到本地。mysql_num_rows和mysql_num_fields获取结果集中的行数和列数。mysql_fetch_row遍历结果集获取单行数据。 2.4 清理和关闭 mysql_free_result释放结果集资源。mysql_close关闭数据库连接销毁句柄。 2.5 错误处理 mysql_error获取MySQL接口执行错误原因。 三. MySQL使用过程 初始化MySQL句柄 使用mysql_init函数初始化一个MySQL连接句柄为后续操作做准备。 连接到MySQL服务器 使用mysql_real_connect函数连接到MySQL服务器需要提供主机地址、用户名、密码、数据库名等信息。 设置字符集 使用mysql_set_character_set设置客户端字符集以确保字符编码的一致性。 执行SQL语句 使用mysql_query执行SQL语句可以是查询、插入、更新或删除等操作。 处理查询结果对于查询操作 如果执行的是查询操作可以使用mysql_store_result保存结果集然后通过mysql_fetch_row逐行读取数据。 错误处理 在每个步骤中如果操作失败可以使用mysql_error获取错误信息。 清理资源 使用完MySQL句柄后使用mysql_free_result释放结果集资源如果有查询操作然后使用mysql_close关闭连接释放句柄资源。 关闭连接 最后关闭与MySQL服务器的连接清理分配的资源。 四. 实现CRUD操作
4.1 创建数据库并建立表
create database if not exists test_db;
use test_db;
create table if not exists test_tb(id int primary key auto_increment,age int,name varchar(32),score decimal(4, 2)
); 4.2 添加数据Create 使用insert语句向数据库表中添加新记录。 #include stdio.h
#include stdlib.h
#include unistd.h
#include string.h
#include mysql/mysql.h
#define HOST 127.0.0.1
#define USER root
#define PASSWD mima
#define DBNAME test_db
void add(MYSQL *mysql)
{char *sql insert into test_tb values(null, 18, 张三, 88.88), (null, 17, 李四, 77);;int ret mysql_query(mysql, sql);if (ret ! 0){printf(mysql query error:%s\n, mysql_error(mysql));return;}return;
}int main()
{MYSQL *mysql mysql_init(NULL);if (mysql NULL){printf(init mysql handle failed!\n);return -1;}if (mysql_real_connect(mysql, HOST, USER, PASSWD, DBNAME, 0, NULL, 0) NULL){printf(mysql connect error:%s\n, mysql_error(mysql));return -1;}mysql_set_character_set(mysql, utf8);add(mysql);mysql_close(mysql);return 0;
} 编译并运行 运行结果 4.3 修改数据Update 使用update语句更新表中的现有记录。 void mod(MYSQL *mysql)
{char *sql update test_tb set age34 where name张三;;int ret mysql_query(mysql, sql);if (ret ! 0){printf(mysql query error:%s\n, mysql_error(mysql));return;}return;
} 运行结果 4.4 删除数据Delete 使用delete语句从表中删除记录。 void del(MYSQL *mysql)
{char *sql delete from test_tb where name张三;;int ret mysql_query(mysql, sql);if (ret ! 0){printf(mysql query error:%s\n, mysql_error(mysql));return;}return;
} 运行结果 4.5 查询数据Retrieve 使用select语句检索表中的数据。 void get(MYSQL *mysql)
{char *sql select * from test_tb;;int ret mysql_query(mysql, sql);if (ret ! 0){printf(mysql query error:%s\n, mysql_error(mysql));return;}MYSQL_RES *res mysql_store_result(mysql);if (res NULL){printf(mysql store result error:%s\n, mysql_error(mysql));return;}int row mysql_num_rows(res);int col mysql_num_fields(res);printf(%10s%10s%10s%10s\n, ID, 年龄, 姓名, 成绩);for (int i 0; i row; i){MYSQL_ROW row_data mysql_fetch_row(res);for (int i 0; i col; i){printf(%10s, row_data[i]);}printf(\n);}mysql_free_result(res);return;
} 运行结果 结语 通过本文的介绍你应该对MySQL的C语言API有了深入的了解。使用这些API你可以在C语言项目中实现对MySQL数据库的高效操作。虽然现代开发中更倾向于使用高级语言和ORM框架但直接使用MySQL C API为理解数据库操作的细节提供了宝贵的视角。