目录

前言:

C语言操作mysql前的准备工作

1.C语言连接mysql数据库

函数介绍

(1)mysql_ini() 函数

(2)mysql_library_init()函数

(3)mysql_real_connect()函数

(4)mysql_set_character_set()函数

连接mysql的完整代码如下:

(5)mysql_close()函数

(6)mysql_library_end()函数

2.C语言读取mysql数据库数据

函数介绍

(1)mysql_real_query()函数

(3) mysql_store_result()函数

(4) mysql_use_result()函数

(5) mysql_num_rows()函数

(6)mysql_num_fields()函数

(7)mysql_fetch_row()函数

完整代码

3.C语言写入数据到mysql数据库

代码如下:

4. C语言修改mysql数据库内容

代码如下:

5.C语言删除MySQL数据库数据

代码如下:

ALL.连接、读取、写入、修改、删除 完整代码:


前言:

前面几期都讲了怎么去安装以及配置mysql数据库,准备工作都完成了,这下总算是可以去写代码了,这一期我讲讲怎么在vs2019通过C语言来操作mysql数据库,包括连接、读取、写入、修改、删除 这些内容。

好了,开始进入正题了。

C语言操作mysql前的准备工作

这里我们要打开cmd黑窗口,开启服务器net start mysql

然后就可以开始啦。

1.C语言连接mysql数据库

函数介绍

(1)mysql_ini() 函数

头文件:#include<mysql.h>

函数原型: MYSQL *mysql_init(MYSQL *mysql)

函数返回值: 一个被始化的MYSQL*句柄,在内存不足的情况下,返回NULL

备注:如果 mysql_init() 分配了一个新对象,则在调用 mysql_close() 关闭连接时将其释放。

示例:

 MYSQL mysql;if (mysql_init(&mysql) == NULL){printf("%s\n",mysql_error(&mysql));//可以通过mysql_error()函数得知错误信息,返回错误信息的字符串exit(1);}

(2)mysql_library_init()函数

头文件:#include<mysql.h>

函数原型:int mysql_library_init(int argc,char **argv,char **groups)

返回值:如果初始化成功就返回0,如果失败就返回非0

备注:在非多线程环境中,mysql_init() 根据需要自动调用 mysql_library_init()。如果是在多线程环境中是要手动去调用这个函数的,比如建立聊天室等,就必须要调用到这个函数,所以我个人建议写上去比较好。在mysql 8.0版本,argc、argv 和 groups 参数未使用,所以写成mysql_library_init(0,NULL,NULL)

示例:

 if (mysql_library_init(0, NULL, NULL) != 0){printf("false\n");exit(1);}

(3)mysql_real_connect()函数

头文件:#include<mysql.h>

函数原型: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 int client_flag);

返回值:函数返回值: 如果连接成功返回一个MYSQL*连接句柄,如果连接失败返回NULL

这个函数的参数比较多,这里我一个一个介绍

MYSQL *mysql  表示传入MySQL结构的地址

const char *host  表示连接的主机名或者IP,127.0.0.1或者localhost表示连接到本机

const char *user  表示用户名

const char *passwd   表示账户密码

const char *db  表示要连接的数据库名字

unsigned int port  表示连接服务器的TCP/IP端口

const char *unix_socket  表示连接的类型,一般设为NULL,默认值

unsigned int client_flag   表示MySQL运行ODBC数据库的标记,一般设为0,默认值

示例:

if (mysql_real_connect(&mysql, "localhost", "heweijie", "heweijie", "hello", 3306, 0, 0) == NULL){printf("%s\n", mysql_error(&mysql));exit(1);}

备注: 其实在mysql_real_connect()函数之前的老版本是用mysql_connect()函数的,但是这个函数已经被淘汰了,使用基本上都是使用mysql_real_connect()函数

(4)mysql_set_character_set()函数

头文件:#include<mysql.h>

函数原型:int mysql_set_character_set(MYSQL *mysql,const char *csname)

返回值:如果设置成功就返回0,如果失败就返回非0

功能:设置字符集,建议用utf8 ,因为utf8 基本包含了全世界所有文字

示例:

 if (mysql_set_character_set(&mysql, "utf8") != 0){printf("erroe\n");exit(1);}

连接mysql的完整代码如下:

#include<stdio.h>
#include<mysql.h>//头文件
#include<stdlib.h>
int main()
{MYSQL mysql;//定义一个MySQL类型的变量if (mysql_init(&mysql) == NULL)//mysql变量初始化{printf("error\n");exit(1);//如果发生错误就退出程序}if (mysql_library_init(0, NULL, NULL) != 0)//数据库初始化{printf("error\n");exit(1);}if (mysql_real_connect(&mysql, "localhost", "heweijie", "heweijie", "hello", 3306, 0, 0) == NULL)//连接{printf("%s\n", mysql_error(&mysql));//输出错误原因(字符串)exit(1);}elseprintf("connect successfully\n");//连接成功if (mysql_set_character_set(&mysql, "utf8") != 0)//设置字符集为utf8{printf("erroe\n");exit(1);}
//…………………………
//…………………………相关操作mysql_close(&mysql);//关闭与服务器的连接mysql_library_end();//结束数据库的运行return 0;
}

(5)mysql_close()函数

头文件:#include<mysql.h>

函数原型:void mysql_close(MYSQL *mysql)

功能:这个是用于关闭服务器连接的,当我们在对mysql数据库操作(读取、删除、写入等)完成之后要记得断开连接

(6)mysql_library_end()函数

头文件:#include<mysql.h>

函数原型:mysql_library_end(void)

功能:前面我们调用了初始化函数,如果关闭了服务器之后发生数据泄露或者内存泄露,我们就可以调用这个函数来结束对数据库的使用

2.C语言读取mysql数据库数据

函数介绍

(1)mysql_real_query()函数

头文件:#include<mysql.h>

函数原型:int mysql_real_query(MYSQL *mysql, const char *stmt_str, unsigned long length)

返回值:如果对数据库的操作成功就返回0,如果失败就返回非0;

功能:这个函数的功能是非常强大的,可以对数据库进行访问以及操作

参数说明:

MYSQL *mysql  传入MySQL类型的地址

const char *stmt_str  是操作字符串

unsigned long length   一般是操作字符串的长度

示例:

 char p[100] = "select *from user";if (mysql_real_query(&mysql, p, strlen(p)) != 0){printf("%s\n", mysql_error(&mysql));exit(1);}

备注:mysql_real_query()函数跟mysql_real_connect()函数一样,也是有一个为mysql_query()函数,不过现在也是基本不用了,mysql_real_query()函数效率更加高

 (2)  MYSQL_RES与MYSQL_ROW 类型

功能:这两个类型是对查询结果进行处理,MYSQL_RES 是用于获取读取结果集;MYSQL_ROW 是用于对结果集进行下一步操作

(3) mysql_store_result()函数

头文件:#include<mysql.h>

函数原型:MYSQL_RES *mysql_store_result(MYSQL *mysql)

返回值:如果上面mysql_real_query()函数操作成功就会返回一个结果集(注意:返回的是全部结果集),如果返回的结果为空的的话这个函数就会返回NULL(这里要注意结果为空返回NULL还是发生错误返回NULL)

示例如下:

 MYSQL_RES*res;res = mysql_use_result(&mysql);if (res == NULL){if (strcmp(mysql_error(&mysql), "") != 0)//错误检测{printf("%s\n",mysql_error(&mysql));exit(1);}elseprintf("结果为空");}

(4) mysql_use_result()函数

头文件:#include<mysql.h>

函数原型:MYSQL_RES *mysql_use_result(MYSQL *mysql)

返回值:如果操作成功就返回一行的结果集,如果失败就返回NULL

(5) mysql_num_rows()函数

头文件:#include<mysql.h>

函数原型:int mysql_num_rows(MYSQL_RES *res)

返回值:返回得到结果集的行数

(6)mysql_num_fields()函数

头文件:#include<mysql.h>

函数原型:int  mysql_num_fields(MYSQL_RES *res)

返回值:返回得到结果集的列数

(7)mysql_fetch_row()函数

头文件:#include<mysql.h>

函数原型:MYSQL_ROW mysql_fetch_row(MYSQL_RES *res)

功能:自动检索到结果集的下一行

返回值:如果下一行有内容就返回真true,如果下一行为空就返回false

完整代码

#include<stdio.h>
#include<mysql.h>//头文件
#include<stdlib.h>
#include<string.h>
int main()
{MYSQL mysql;//定义一个MySQL类型的变量//连接数据库if (mysql_init(&mysql) == NULL)//mysql变量初始化{printf("error\n");exit(1);//如果发生错误就退出程序}if (mysql_library_init(0, NULL, NULL) != 0)//数据库初始化{printf("error\n");exit(1);}if (mysql_real_connect(&mysql, "localhost", "heweijie", "heweijie", "hello", 3306, 0, 0) == NULL)//连接{printf("%s\n", mysql_error(&mysql));//输出错误原因(字符串)exit(1);}elseprintf("connect successfully\n");//连接成功if (mysql_set_character_set(&mysql, "utf8") != 0)//设置字符集为utf8{printf("erroe\n");exit(1);}//查询数据MYSQL_RES* res;//这个变量是用来接受到结果MYSQL_ROW row;//这个变量是用来输出表示接受的结果char p[100] = "select *from user";//输出表中全部数据指令if (mysql_real_query(&mysql, p, strlen(p)) != 0){printf("%s\n", mysql_error(&mysql));exit(1);}res = mysql_use_result(&mysql);//接收数据if (res == NULL){if (strcmp(mysql_error(&mysql), "") != 0)//错误检测{printf("%s\n",mysql_error(&mysql));exit(1);}elseprintf("结果为空");}int y = mysql_num_fields(res);//获取数据的列数printf("%d   %d\n", x, y);while (row = mysql_fetch_row(res)){for (int i = 0; i < y; i++)printf("%-10s", row[i]);//输出数据puts("");}mysql_close(&mysql);//关闭与服务器的连接mysql_library_end();//结束数据库的运行return 0;
}

mysql_real_query函数的操作指令基本跟cmd的操作指令差不多的,如果想了解更多可以看看这个cmd指令操作MySQL数据库(图文详细介绍)_守约斯维奇的博客-CSDN博客

当前数据库名字为hello,当前操作的表名字为user,内容如下:

3.C语言写入数据到mysql数据库

相关函数:mysql_real_query()

这个函数其实是对数据库进行操作的函数,不仅仅可以用于查询,而且还可以用于数据的删除修改,写入等等……

代码如下:

    char p[50];
strcpy(p, "insert into user values (12,'蒙恬','123441','将军')");if (mysql_real_query(&mysql, p, strlen(p)) != 0);{printf("%s\n", mysql_error(&mysql));exit(1);}elseprintf("写入成功\n");

4. C语言修改mysql数据库内容

相关函数:mysql_real_query()

代码如下:

char p[50];
strcpy(p, "update user set comment='B级别刮痧师' where id=6");if (mysql_real_query(&mysql, p, strlen(p)) != 0){printf("%s", mysql_error(&mysql));exit(0);}elseprintf("修改成功\n");

5.C语言删除MySQL数据库数据

相关函数:mysql_real_query()

代码如下:

char p[50];
strcpy(p, "delete from user where id=7");//删除id=7的这一行if (mysql_real_query(&mysql, p, strlen(p)) != 0){printf("%s", mysql_error(&mysql));exit(0);}elseprintf("删除成功\n");

ALL.连接、读取、写入、修改、删除 完整代码:

#include<stdio.h>
#include<mysql.h>//头文件
#include<stdlib.h>
#include<string.h>
int main()
{MYSQL mysql;//定义一个MySQL类型的变量//连接数据库if (mysql_init(&mysql) == NULL)//mysql变量初始化{printf("error\n");exit(1);//如果发生错误就退出程序}if (mysql_library_init(0, NULL, NULL) != 0)//数据库初始化{printf("error\n");exit(1);}if (mysql_real_connect(&mysql, "localhost", "heweijie", "heweijie", "hello", 3306, 0, 0) == NULL)//连接{printf("%s\n", mysql_error(&mysql));//输出错误原因(字符串)exit(1);}elseprintf("connect successfully\n");//连接成功if (mysql_set_character_set(&mysql, "utf8") != 0)//设置字符集为utf8{printf("erroe\n");exit(1);}//查询数据MYSQL_RES* res;//这个变量是用来接受到结果MYSQL_ROW row;//这个变量是用来输出表示接受的结果char p[100] = "select *from user";//输出表中全部数据指令if (mysql_real_query(&mysql, p, strlen(p)) != 0){printf("%s\n", mysql_error(&mysql));exit(1);}res = mysql_use_result(&mysql);//接收数据if (res == NULL){if (strcmp(mysql_error(&mysql), "") != 0)//错误检测{printf("%s\n",mysql_error(&mysql));exit(1);}elseprintf("结果为空");}int y = mysql_num_fields(res);//获取数据的列数printf("%d   %d\n", x, y);while (row = mysql_fetch_row(res)){for (int i = 0; i < y; i++)printf("%-10s", row[i]);//输出数据puts("");}//写入数据strcpy(p, "insert into user values (12,'蒙恬','123441','将军')");if (mysql_real_query(&mysql, p, strlen(p)) != 0);{printf("%s\n", mysql_error(&mysql));exit(1);}elseprintf("写入成功\n");//修改数据strcpy(p, "update user set comment='B级别刮痧师' where id=6");if (mysql_real_query(&mysql, p, strlen(p)) != 0){printf("%s", mysql_error(&mysql));exit(0);}elseprintf("修改成功\n");//删除数据strcpy(p, "delete from user where id=7");//删除id=7的这一行if (mysql_real_query(&mysql, p, strlen(p)) != 0){printf("%s", mysql_error(&mysql));exit(0);}elseprintf("删除成功\n");mysql_close(&mysql);//关闭与服务器的连接mysql_library_end();//结束数据库的运行return 0;
}

好啦,这一期就讲到这里了,喜欢的小伙伴们给个关注吧,thanks!

C语言(APL指令)对mysql数据库的操作-----连接、读取、写入、修改、删除(保姆级讲解)相关推荐

  1. MySQL 数据库的操作 连接、新增、删除、选择数据库 命令行(带图)

    MySQL 数据库的操作 连接.新增.删除.选择数据库 命令行 一.连接数据库 在命令行通过 下面命令 mysql -u root -p123456 #这里跟的是自己的密码 8.0的密码要回车后输入. ...

  2. MySQL数据库快速入门到精通(超详细保姆级,建议收藏)这可能是目前最适合你的教程,从基础语法到实例演示。

    前言 此文章旨在为需要掌握快速开发和复习MySQL的同学所准备,您完全可以把此文章当作参考文档来使用,本文将尽量精简,使您快速的理解和掌握语法. 关于MySQL MySQL是一个关系型数据库管理系统, ...

  3. c 编程 mysql结果集_使用mysql C语言API编写程序—MYSQL数据库查询操作(执行查询操作,获取查询结果的字段数,记录行数,...

    //MYSQL_RES保存查询结构 MYSQL_RES* result_ = NULL; int error_code = 0; //保存错误码 char error_info[1024] = '\0 ...

  4. c语言 mysql 查询数字_使用mysql C语言API编写程序—MYSQL数据库查询操作

    //MYSQL_RES保存查询结构 MYSQL_RES* result_ = NULL; int error_code = 0;//保存错误码 char error_info[1024] = '\0' ...

  5. 基于c语言的简单的mysql数据库操作

    基于c语言的简单的mysql数据库操作 最近做项目需要利用c语言对mysql进行获取数据的操作,于是我对mysql社区提供的c语言调用mysql的部分api进行了简单封装,这里做下记录,方便以后回顾. ...

  6. C语言对mysql数据库的操作

    C语言对mysql数据库的操作 原文:C语言对mysql数据库的操作 这已经是一相当老的话题.不过今天我才首次使用,把今天的一些体会写下来,也许能给一些新手带来一定的帮助,更重要的是供自己今后忘记的怎 ...

  7. php mysql持久连接是怎样的_怎样使PHP与MySQL数据库进行持久连接

    本篇文章是关于介绍PHP与MySQL数据库进行持久连接的具体操作步骤,有需要的朋友可以了解一下,希望能对你有帮助. 数据库持久连接: 1.持久的数据库连接是指在脚本结束运行时不关闭的连接.当收到一个持 ...

  8. 通过图形界面对MySQL数据库进行操作

    MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用 ...

  9. MySQL数据库常用操作(20221211)

    记录:360 场景:MySQL数据库常用操作,启动.重启.停止MySQL服务:创建用户.数据库.表.主键.索引.注释等.配置远程可连接.配置环境变量.常用系统表操作.常用命令行操作.表的增删改查等操作 ...

最新文章

  1. flask 常见关系模板代码
  2. 6.18docker(一)Compose 模板文件
  3. html制作滚动游戏,HTML标签marquee实现滚动效果的简单方法(必看)
  4. Request请求对象
  5. java图形界面重写坐标_重写自由软件和计算机图形的历史
  6. linux 指定cpu运行线程,linux 线程与CPU绑定
  7. python往mysql存入数据_Python向mysql存入数据出错.
  8. android中handler简单用法
  9. 高中信息技术:网络基础知识(IP地址、网页设计)、多媒体技术(图像PS、音频、视频、动画)
  10. 英语口语测试评分软件,最客观的英语口语APP亲身测评,这3款软件让你的口语脱颖而出...
  11. 使用Springboot开发前后端分离校园智能出行拼车系统
  12. Android Persistent常驻内存分析
  13. 基于移动端端vant使用ImagePreview 图片预览的使用的一些问题
  14. 漫步数理统计二十五——正态分布
  15. JAVA Web day01--- Android小白的第一天学习笔记
  16. 信息系统典型的开发架构
  17. .NET 4.0 Interop新特性ICustomQueryInterface
  18. python歌词特效,根据歌词的进度在图片上显示歌词
  19. 使用css animation动画做边框闪动效果
  20. 短视频软件开发——平台同质化如何破局

热门文章

  1. (深搜)蒜厂有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动。(深搜)
  2. 2022 Robocom世界机器人开发者大赛 CAIP编程赛道 本科组-省赛 挨打记录+题解
  3. 【转】91个排名:中国知名个人站长及发家史
  4. 全国人工智能师资培训高校行重磅启动,飞桨携手7校开启AI学习之旅
  5. THU2015 fall 1-1 Team
  6. JZOJ 5353. 村通网
  7. linux驱动系列学习之input子系统(二)
  8. CodeM资格赛E 数码 题解
  9. ISA 2004 介绍
  10. 分享两道阿里P7究极难度算法题,满满干货指导