C语言:C语言实现对MySQL数据库表增删改查功能

基础DOME可以用于学习借鉴;

具体代码

javascript 复制代码
#include <stdio.h> 
#include <mysql.h> // mysql 文件,如果配置ok就可以直接包含这个文件

//宏定义 连接MySQL必要参数
#define SERVER "localhost" //或 127.0.0.1
#define USER "root"
#define PASSWORD "W113416w+" //password
#define DATABASE "domedata" //your_database
int main(void) {
	MYSQL mysql; //数据库句柄
	MYSQL_RES* res; //查询结果集 
	MYSQL_ROW row; //记录结构体

	//初始化数据库 
	mysql_init(&mysql);
	if (&mysql == NULL) {
		//fprintf(stderr, "%s\n", mysql_error(&mysql));
		exit(1);
	}

	//设置字符编码
	mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gbk");

	//连接数据库
	if (mysql_real_connect(&mysql, SERVER, "root",
		//"password", "database_name"分别填写自己的的数据库登录密码和表所在的数据库名称
		//这里替换成自己的的数据库等路密码和自己所建的数据库名称即可
		PASSWORD, DATABASE, 3306, NULL, 0) == NULL) {
		//fprintf(stderr, "%s\n", mysql_error(&mysql));
		mysql_close(&mysql);
		printf("错误原因: %s\n", mysql_error(&mysql));
		printf("连接失败!\n");
		exit(-1);
	}

	//查询数据
	int ret = mysql_query(&mysql, "select * from student;");
	//student是自己在数据库中所建的表名
	printf("ret: %d\n", ret);
	printf("第一次打印数据库 \n"); //打印
	//获取结果集
	res = mysql_store_result(&mysql);

	//给 ROW 赋值,判断 ROW 是否为空,不为空就打印数据。
	while (row = mysql_fetch_row(res)) {
		printf("%s ", row[0]); //打印 ID
		printf("%s ", row[1]); //打印姓名
		printf("%s ", row[2]); //打印班级
		printf("%s \n", row[3]);//打印性别
	}

	// 插入数据
	if (mysql_query(&mysql, "INSERT INTO student (id,name,age,grade,iphone) VALUES (2,'Alice', 20,92,'15555556666')")) {
		fprintf(stderr, "%s\n", mysql_error(&mysql));
		mysql_close(&mysql);
		exit(1);
	}
	printf("Inserted successfully.\n");

	// 查询数据
	printf("------插入数据后:------第二次打印数据库 \n"); //打印 
	ret = mysql_query(&mysql, "select * from student;");
	//student是自己在数据库中所建的表名
	printf("ret: %d\n", ret);

	//获取结果集
	res = mysql_store_result(&mysql);

	//给 ROW 赋值,判断 ROW 是否为空,不为空就打印数据。
	while (row = mysql_fetch_row(res)) {
		printf("%s ", row[0]); //打印 ID
		printf("%s ", row[1]); //打印姓名
		printf("%s ", row[2]); //打印班级
		printf("%s \n", row[3]);//打印性别
	}

	// 更新数据
	if (mysql_query(&mysql, "UPDATE student SET grade = 99 WHERE name = 'Alice'")) {
		//fprintf(stderr, "%s\n", mysql_error(&mysql));
		mysql_close(&mysql);
		exit(1);
	}
	printf("Updated successfully.\n");


	// 查询数据
	printf("------修改数据后:------第三次打印数据库 \n"); //打印 
	ret = mysql_query(&mysql, "select * from student;");
	//student是自己在数据库中所建的表名
	printf("ret: %d\n", ret);

	//获取结果集
	res = mysql_store_result(&mysql);

	//给 ROW 赋值,判断 ROW 是否为空,不为空就打印数据。
	while (row = mysql_fetch_row(res)) {
		printf("%s ", row[0]); //打印 ID
		printf("%s ", row[1]); //打印姓名
		printf("%s ", row[2]); //打印班级
		printf("%s \n", row[3]);//打印性别
	}

	// 删除数据
	if (mysql_query(&mysql, "DELETE FROM student WHERE name = 'Alice'")) {
		//fprintf(stderr, "%s\n", mysql_error(&mysql));
		mysql_close(&mysql);
		exit(1);
	}
	printf("Deleted successfully.\n");

	// 查询数据
	printf("------删除数据后:------第四次打印数据库 \n"); //打印 
	ret = mysql_query(&mysql, "select * from student;");
	//student是自己在数据库中所建的表名
	printf("ret: %d\n", ret);

	//获取结果集
	res = mysql_store_result(&mysql);

	//给 ROW 赋值,判断 ROW 是否为空,不为空就打印数据。
	while (row = mysql_fetch_row(res)) {
		printf("%s ", row[0]); //打印 ID
		printf("%s ", row[1]); //打印姓名
		printf("%s ", row[2]); //打印班级
		printf("%s \n", row[3]);//打印性别
	}

	//释放结果集 
	mysql_free_result(res);

	//关闭数据库
	mysql_close(&mysql);
	system("pause");
	return 0;
}

输出结果:

javascript 复制代码
ret: 0
第一次打印数据库
0 李四 21 98
1 王五 20 85
Inserted successfully.
------插入数据后:------第二次打印数据库
ret: 0
0 李四 21 98
1 王五 20 85
2 Alice 20 92
Updated successfully.
------修改数据后:------第三次打印数据库
ret: 0
0 李四 21 98
1 王五 20 85
2 Alice 20 99
Deleted successfully.
------删除数据后:------第四次打印数据库
ret: 0
0 李四 21 98
1 王五 20 85
请按任意键继续. . .

相关链接

  1. SQL:Windows下C/C++连接访问MySQL数据库(亲测有效!一遍过!)
相关推荐
小溪学编程6 小时前
C语言篇:语言结构
c语言·开发语言·算法
老王爱玩车6 小时前
字符串和字符串函数
c语言·开发语言·数据结构·学习
山下梅子酒2256 小时前
洛谷-入门-B2082
c语言
字节渡客7 小时前
接口明明返回成功,数据库偶尔就是没写入
数据库
Ivanqhz7 小时前
KV Cache
服务器·数据库·人工智能·深度学习·算法
Omics Pro7 小时前
~30,000+引用!理论2005,R包2008,多组学集成AI增强
开发语言·数据库·人工智能·算法·机器学习·自然语言处理·r语言
呆萌很7 小时前
数据库逻辑结构设计
数据库
howdoyoudo2026067 小时前
当新案例冲击旧框架:分类系统的宿命与修正路径
大数据·网络·数据库·人工智能·安全·ai·分类
自己的九又四分之三站台7 小时前
GeoPackage 到底适合什么场景:从 SQLite 容器到空间数据格式选型
数据库·oracle·sqlite
东方护航数据恢复(深圳)8 小时前
勒索病毒加密数据库怎么办?深圳 0 赎金解密恢复实录【东方护航数据恢复深圳店】
数据库·数据恢复·服务器数据恢复·勒索病毒·数据镜像