IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> Linux C/C++ 实现 MySQL数据库的增删改查(CRUD) -> 正文阅读

[C++知识库]Linux C/C++ 实现 MySQL数据库的增删改查(CRUD)


欢迎大家来到别爱的CSDN


前言

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
所以我们应该熟悉Linux下mysql的增删改查


一、前提条件(Ubuntu)

1.在Linux环境下安装MySQL
sudo apt-get update  				//更新软件源
sudo apt-get install mysql-server  //安装mysql
2.在Linux环境下安装libmysqlclient-dev
sudo apt-get install libmysqlclient-dev
3.编译c文件时加上-I /usr/include/mysql/ -lmysqlclient
gcc -o mysql Mysql.c -I /usr/include/mysql/ -lmysqlclient
4.创建表id,姓名,性别

在这里插入图片描述

二、实现部分

1.连接mysql

代码如下(示例):


	MYSQL mysql;

	if (NULL == mysql_init(&mysql)) {

		printf("mysql_init :%s\n", mysql_error(&mysql));//打印错误信息
		return -1;
	}
									//ip //用户名 //密码 //数据库名 //端口号
	if (!mysql_real_connect(&mysql, BIEAI_DB_SERVER_IP, BIEAI_DB_USERNAME, BIEAI_DB_PASSWORD, BIEAI_DB_DEFAULTDB, BIEAI_DB_SERVER_PORT, NULL, 0)) {//返回0成功

		printf("mysql_real_connect :%s\n", mysql_error(&mysql));//打印错误信息
		return -2;
	}

2.添加部分

代码如下(示例):

printf("case: mysql --> insert");
	if (mysql_real_query(&mysql, SQL_INSERT_TBL_USER, strlen(SQL_INSERT_TBL_USER))) {

		printf("mysql_real_query: %s\n", mysql_error(&mysql));
	}

3.查询部分

代码如下(示例):

int bieai_mysql_select(MYSQL* handle) {

	//mysql_real_query -->sql
	if (mysql_real_query(handle, SQL_SELECT_TBL_USER, strlen(SQL_SELECT_TBL_USER))) {

		printf("mysql_real_query: %s\n", mysql_error(handle));
		return -1;
	}

	//store
	MYSQL_RES* res = mysql_store_result(handle);
	if (res == NULL) {

		printf("mysql_store_result: %s\n", mysql_error(handle));
		return -2;
	}

	//rows / fields
	int rows = mysql_num_rows(res);
	printf("rows: %d\n", rows);

	int fields = mysql_num_fields(res);
	printf("fields: %d\n", fields);

	//fetch
	MYSQL_ROW row;
	while ((row = mysql_fetch_row(res))) {

		for (int i = 0; i < fields; ++i) {
			printf("%s\t", row[i]);
		}
		printf("\n");

	}



	mysql_free_result(res);

	return 0;
}

4.删除部分(使用存储过程了)

因为我选择了不安全操作,需要三条SQL语句,所以用存储过程打包。
存储过程的代码如下(示例):

DELIMITER **
CREATE PROCEDURE PROC_DELETE_USER(IN UNAME VARCHAR(32))
BEGIN
SET SQL_SAFE_UPDATES=0;
DELETE from TBL_USER WHERE U_NAME=UNAME;
SET SQL_SAFE_UPDATES=1;
END**

代码如下(示例):

printf("case: mysql --> delete");
		if (mysql_real_query(&mysql, SQL_DELETE_TBL_USER, strlen(SQL_DELETE_TBL_USER))) {

			printf("mysql_real_query: %s\n", mysql_error(&mysql));
		}

5.完整代码

代码如下(示例):

#include<stdio.h>
#include<string.h>

#include<mysql.h>

#define BIEAI_DB_SERVER_IP "192.168.230.128"	
#define BIEAI_DB_SERVER_PORT 3306

#define BIEAI_DB_USERNAME "admin"
#define BIEAI_DB_PASSWORD "131420"

#define BIEAI_DB_DEFAULTDB "BIEAI_DB"

#define SQL_INSERT_TBL_USER "INSERT TBL_USER(U_NAME,U_GENGDER) VALUES('lisi','boy');" //添加sql语句
#define	SQL_SELECT_TBL_USER "SELECT * FROM TBL_USER;"								  //查询sql语句

#define SQL_DELETE_TBL_USER "CALL PROC_DELETE_USER('lisi')"							//删除sql语句




int bieai_mysql_select(MYSQL* handle) {

	//mysql_real_query -->sql
	if (mysql_real_query(handle, SQL_SELECT_TBL_USER, strlen(SQL_SELECT_TBL_USER))) {

		printf("mysql_real_query: %s\n", mysql_error(handle));
		return -1;
	}

	//store
	MYSQL_RES* res = mysql_store_result(handle);
	if (res == NULL) {

		printf("mysql_store_result: %s\n", mysql_error(handle));
		return -2;
	}

	//rows / fields
	int rows = mysql_num_rows(res);
	printf("rows: %d\n", rows);

	int fields = mysql_num_fields(res);
	printf("fields: %d\n", fields);

	//fetch
	MYSQL_ROW row;
	while ((row = mysql_fetch_row(res))) {

		for (int i = 0; i < fields; ++i) {
			printf("%s\t", row[i]);
		}
		printf("\n");

	}



	mysql_free_result(res);

	return 0;
}



int main() {

	MYSQL mysql;

	if (NULL == mysql_init(&mysql)) {

		printf("mysql_init :%s\n", mysql_error(&mysql));
		return -1;
	}

	if (!mysql_real_connect(&mysql, BIEAI_DB_SERVER_IP, BIEAI_DB_USERNAME, BIEAI_DB_PASSWORD, BIEAI_DB_DEFAULTDB, BIEAI_DB_SERVER_PORT, NULL, 0)) {//返回0成功

		printf("mysql_real_connect :%s\n", mysql_error(&mysql));
		return -2;
	}

	//MYSQL INSERT
#if 1
	printf("case: mysql --> insert");
	if (mysql_real_query(&mysql, SQL_INSERT_TBL_USER, strlen(SQL_INSERT_TBL_USER))) {

		printf("mysql_real_query: %s\n", mysql_error(&mysql));
	}
#endif


	bieai_mysql_select(&mysql);

	
	//MYSQL DELETE
#if 1
	printf("case: mysql --> delete");
		if (mysql_real_query(&mysql, SQL_DELETE_TBL_USER, strlen(SQL_DELETE_TBL_USER))) {

			printf("mysql_real_query: %s\n", mysql_error(&mysql));
		}
#endif


		
	bieai_mysql_select(&mysql);


	mysql_close(&mysql);

	return 0;

}



总结

今天我给大家展示了Linux下mysql的安装,以及CRUD(增删改查),主要使用了c语言调用mysql的api实现。

参考资料

C/C++ Linux高级开发课程

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-01-11 23:48:36  更:2022-01-11 23:48:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:45:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码