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

35 篇文章 0 订阅
2 篇文章 0 订阅

欢迎大家来到别爱的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高级开发课程

  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值