首页 > 数据库 >C++ - 操作mysql数据库

C++ - 操作mysql数据库

时间:2023-10-11 17:11:07浏览次数:47  
标签:mysql 数据库 printf C++ sql 数据 void

操作数据库的案例

#include <stdio.h>
#include <stdlib.h>
#include <mysql.h>

//固定不变的
MYSQL mysql;    //一个数据库结构体  
MYSQL_RES* res; //一个结果集结构体
MYSQL_ROW row; //char** 二维数据,存放一条条记录


void connect();//连接数据库
void insert(); //插入数据
void delet();  //删除数据
void update(); //更新数据
void select(); //查询数据


int main()
{
	connect();

	select();

	return 0;
}

void connect()
{


	//初始化数据库
	mysql_init(&mysql);

	//设置编码方式
	mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gbk");

	//连接数据库                    //ip地址	   //用户名 //密码       //数据库名
	if (mysql_real_connect(&mysql, "localhost", "root", "123456", "test", 3306, NULL, 0))
	{
		printf("数据库连接成功!\n");
	}
	else
	{
        printf("数据库连接失败!\n");
		printf("错误原因:%s\n", mysql_error(&mysql));
		exit(-1);
	}
}

void insert()
{
	//向数据库插入数据
	const char* sql = "insert into student values(2,'李四','女'),(3,'王五','男'),(4, '赵六', '女')";
	if (mysql_query(&mysql, sql))
	{
		printf("插入数据失败:%s \n", mysql_error(&mysql));
	}
	else
	{
		printf("插入数据成功\n");
	}
}

void delet()
{
	//向数据库删除数据
	const char* sql_2 = "delete from student where name = '赵六'";
	if (mysql_query(&mysql, sql_2))
	{
		printf("删除数据失败:%s \n", mysql_error(&mysql));
	}
	else
	{
		printf("删除数据成功\n");
	}
}

void update()
{
	//向数据库修改数据
	const char* sql_3 = "update student set id = 5 where name = '李四'";
	if (mysql_query(&mysql, sql_3))
	{
		printf("修改数据失败:%s \n", mysql_error(&mysql));
	}
	else
	{
		printf("修改数据成功\n");
	}
}

void select()
{
	//需要注意的是,在下面的设置中,所查询到的数据 与打印出来的数据要相互匹配,
	//不然就会出现乱码的
	//查询数据
	const char* sql_4 = "select * from student where name = '李四'";
	if (mysql_query(&mysql, sql_4))
	{
		printf("未查到记录:%s \n", mysql_error(&mysql));
	}
	else
	{
		printf("查询成功 \n");
	}
	//获取查询结果集
	res = mysql_store_result(&mysql);
	if (res)
	{
		printf("获取到数据\n");
	}
	else
	{
		printf("未获取到数据:%s \n", mysql_error(&mysql));
	}
	//打印获取到的数据
	printf("id\tname\tsex\n");
	while (row = mysql_fetch_row(res))
	{
		printf("%s\t%s\t%s\n", row[0], row[1], row[2]);
	}
	//释放资源
	mysql_free_result(res);//释放结果集
	mysql_close(&mysql);//关闭数据库
}

运行结果:

使用sprintf()拼接sql语句

	char sql[1024];
	int id = 8;
	char name[25] = "张六";
	char sex[25] = "男";

	//使用sprintf拼出来的语句是一个标准的c语言字符串,可以使用该函数插入变量值
	sprintf_s(sql, "insert into student values(%d, '%s', '%s');", id, name, sex);
	if (mysql_query(&mysql, sql))//该语句提交成功返回0,失败放回1
	{
		printf("插入数据失败\n");
	}
	else
	{
		printf("插入数据成功\n");
	}

	select();

 

标签:mysql,数据库,printf,C++,sql,数据,void
From: https://www.cnblogs.com/zhuchunlin/p/17757679.html

相关文章

  • 019 数据库学习笔记--代码生成工具(满满的成产力)
    -------------------------------生成实体类-------------------------------declare@TableNamesysname='ViewQualityInfo'declare@TableNameLsysname='viewQualityInfo'declare@Resultvarchar(max)='///<summary>///'......
  • MySQL优化
    1.性能优化:1.1表结构优化(下述建议针对数据量巨大,每一点空间都需要节省的情况,当然在设计初期能考虑到以下建议最好)A:字段设计优化1.1.1整数类型:  1.对于整数int类型,数据量较大的情况下建议区分tinyint,int,bigint,三者所占据的空间有很大的......
  • mysql 删除数组 json 字段中的某个指定值
    例:SELECTcar_imgFROMlogistics_car_infoWHEREcar_id=2--结果为:["1","2","3","4"]SELECTJSON_SEARCH(car_img,'one','4')FROMlogistics_car_infoWHEREcar_id=2--结果为:"$[3]"SELE......
  • MySQL的行锁和表锁机制
    一、引言​ 在数据库管理系统中,锁是用来控制对数据的访问的机制。MySQL既支持行级锁(Row-levelLocking),也支持表级锁(Table-levelLocking)。​ MySQL引擎中,MyISAM不支持行锁,而InnoDB支持行锁和表锁。二、行锁(Row-levelLocking)​ 行锁是指对数据表中的一行记录进行锁定,其他事......
  • mysql 中 timestampdiff 一个让人费解的问题
    取当前时间 使用上面取到的时间与now()使用timestampdiff进行month级别比较 将上面取到的日期递增一个月再次比较 结果让人很费解 在此给自己提个醒,mysql单纯使用日期还是用 current_date吧......
  • 在Ubuntu22.04上安装MySQL-Server,并配置可视化界面SQL-Workbench
    在Ubuntu22.04上安装MySQL-Server,并配置可视化界面MySQL-Workbench彻底删除MySQL若您是首次,在Ubuntu22.04上崭新安装mysql,可以略过该步。首先卸载mysql-common:sudoapt-getremovemysql-common然后卸载已经安装的mysql-server:sudoapt-getautoremove--purgemysql-ser......
  • WebAssembly C++开发环境搭建
    WebAssembly开发环境搭建简介WebAssembly是一种新的编码方式,可以在现代的网络浏览器中运行-它是一种低级的类汇编语言,具有紧凑的二进制格式,可以接近原生的性能运行,并为诸如C/C++等语言提供一个编译目标,以便它们可以在Web上运行。它也被设计为可以与JavaScript共存,允许两......
  • c++编译报错解决办法
    所有的警告都被当作是错误在全局域:cc1plus:错误:unrecognizedcommandlineoption‘-Wno-unknown-warning’[-Werror]cc1plus:所有的警告都被当作是错误解决办法:去除CMakeLists.txt中的-Werror......
  • mysql插入数据时遇到的问题
    1、 Illegalmixofcollations(latin1_swedish_ci,IMPLICIT)and(utf8mb4_general_ci,COERCIBLE)foroperation'=' 解决:原因:因为新创建的表字符集是latin1_swedish_ci,而原有的字符集需要utf8mb4_general_ci,所以报错。ALTERTABLE表名CONVERTTOCHARACTER......
  • luffy前端配置,跨域问题,后端数据库迁移, 后台主页功能,后台管理
    1luffy前端配置......