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


欢迎大家来到别爱的CSDN

文章目录

  • 前言
  • 一、前提条件(Ubuntu)
  • 二、实现部分
    • 1.连接mysql
    • 2.添加部分
    • 3.查询部分
    • 4.删除部分(使用存储过程了)
    • 5.完整代码
  • 总结
  • 参考资料


前言

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,姓名,性别

Linux C/C++ 实现 MySQL数据库的增删改查(CRUD)_第1张图片

二、实现部分

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
#include

#include

#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高级开发课程

你可能感兴趣的:(Linux,c++,MySQL,mysql,linux,c++,c语言)