c++ 使用mysql++ 操作数据库进行增删改查

C++操作MySQL总结 数据库是软件开发中必不可少的一个环节。今天介绍下c++如何来操作数据库! C++操作数据库主要有2中方式:1、通过C++ API方式调用    2、通过mysql的Connector C++  ==================================================================================================== 阅读详情

简介

MySQL++是官方发布的一套C++ API;
MySQL++是对MySQL和MariaDB C api的再次封装,是 MySQL C API 的强大 C ++包装器(使用 STL 容器);它建立在与标准c++库相同的原则之上,使处理数据库如同处理std容器(STL)一样简单。MySQL++还提供了一些工具,可以让您在自己的代码中避免重复的SQL,为这些常见任务提供了本地c++接口。

项目简介

我运行了mysql++文件中的resetdb,自动创建练习数据库,编写一个基于控制台的用户程序对此数据库增删改查。

#include <iostream>
#include <errno.h>
#include <mysql++/mysql++.h>
using namespace std;

/*
mysql -uroot -proot123
use MySQLCrashCourse
select * from customers;
*/
using Func =void (*)();
struct Ctos{
	Func func;
	string desc; 
};

 
mysqlpp::Connection conn;
void quit();
void add();
void show();
void del();
void mod();
void findByName();
void findByNo();
Ctos ctos[]={
	{quit,"quit"},
	{show,"show"},
	{add,"add"},
	{del,"delete"},
	{mod,"modify"},
	{findByName,"find by name"},
	{findByNo,"find by no"}
}; 
void menu(){
	for(int i=0;i<sizeof(ctos)/sizeof(Ctos);i++){
		cout<<i<<" "<<ctos[i].desc<<"   ";
	}
	cout<<endl<<"<<<";
}
void run(){
	while(1){
		menu();
		int opt=0;
		cin>>opt;
		if(opt>=0&&opt<sizeof(ctos)/sizeof(Ctos))
			ctos[opt].func();
		else
			cout<<"wrong option"<<endl;
	}
}
void show(){
	cout<<"show()"<<endl;
	mysqlpp::Query query1=conn.query("select * from stock");
	if(mysqlpp::StoreQueryResult res=query1.store()){
		cout.setf(ios::left);
		cout<<setw(31)<<"item"
		<<setw(10)<<"num"
		<<setw(10)<<"weight"
		<<setw(10) << "price"
		<<"sdate"<<endl;

		for(size_t i=0;i<res.num_rows();i++){
			cout<<setw(30)<<res[i]["item"]
			<<setw(9)<<res[i]["num"]
			<<setw(10)<<res[i]["weight"]
			<<setw(10)<<res[i]["price"]
			<<setw(9) << res[i]["sdate"]<<endl;
		}
	}else{
		cerr<<"Failed to get item list"<<query1.error()<<endl;
		
	}
}
void quit(){
	cout<<"bye"<<endl;

	
	exit(0);
}

void add(){
	cout<<"add()"<<endl;
	cout<<"input item num weight price sdate"<<endl;
	string item,num,weight,price,sdate;
	cin>>item>>num>>weight>>price>>sdate;

	string input="";
	input+="'"+item+"'"+" , "+num+" , "+weight+" , "+price+" , "+"'"+sdate+"'";
	string querystr="insert into stock values(";
	//cout<<"querystr : "<<querystr<<endl;
	querystr+=input+","+"'NULL'"+" );";
	cout<<"querystr : "<<querystr<<endl;
	mysqlpp::Query query2=conn.query();
	query2<<querystr;
	cout<<"exe query: "<<query2<<endl;
	query2.execute();
	show();
}

void del(){
	cout<<"del()"<<endl;
	cout<<"input item you want to delete"<<endl;
	string item;
	cin>>item;
	string querystr="delete from stock where item = ";
	querystr+="'"+item+"' ;";
	mysqlpp::Query query=conn.query(querystr);
	query.execute();
	show();
}
void mod(){
	cout<<"mod()"<<endl;
	cout<<"input item you want to modify"<<endl;
	string name;
	cin>>name;
	cout<<"input update item num weight price :";
	string item,num,weight,price,date;
	cin>>item>>num>>weight>>price>>date;
	
	string querystr="update  stock set item = ";
	querystr+="'"+item+"' ,"+" num ="+num+", weight = "
		+weight+", price= "+price+", sdate= '"+date+"' where item ="+"'"+name+"'";
	cout<<"querystr:"<<querystr<<endl;
	mysqlpp::Query query=conn.query(querystr);
	query.execute();
	show();

}
void findByName(){	
	cout<<"findByName()"<<endl;
	cout<<"input item name: ";
	string name;
	cin>>name;
	string querystr="select * from stock where item = ";
	querystr+="'"+name+"' ;";
	mysqlpp::Query query=conn.query(querystr);
	if (mysqlpp::StoreQueryResult res = query.store()) 
    { 
    	if(res.num_rows()==0){
    		cout<<"not found any data"<<endl;
    		return;
    	}
    	for (size_t i = 0; i < res.num_rows(); i++)
			{
				cout << setw(30) << res[i]["item"]
					 << setw(9) << res[i]["num"]
					 << setw(9) << res[i]["weight"]
					 << setw(9) << res[i]["price"]
					 << setw(9) << res[i]["sdate"] << endl;
			}
    } 

    else 
    { 
     cerr << "Failed to get item list: " << query.error() << endl; 
    } 
}
void findByNo(){
	cout<<"findByNo()"<<endl;
	cout<<"findByName()"<<endl;
	cout<<"input item num: ";
	string num;
	cin>>num;
	string querystr="select * from stock where num = ";
	querystr+="'"+num+"' ;";
	mysqlpp::Query query=conn.query(querystr);
	if (mysqlpp::StoreQueryResult res = query.store()) 
    { 
    	if(res.num_rows()==0){
    		cout<<"not found any data"<<endl;
    		return;
    	}
    	for (size_t i = 0; i < res.num_rows(); i++)
			{
				cout << setw(30) << res[i]["item"]
					 << setw(9) << res[i]["num"]
					 << setw(9) << res[i]["weight"]
					 << setw(9) << res[i]["price"]
					 << setw(9) << res[i]["sdate"] << endl;
			}
    } 

    else 
    { 
     cerr << "Failed to get item list: " << query.error() << endl; 
    } 
}
int main(int argc, char *argv[])
{
	conn=false;
	if (conn.connect("mysql_cpp_data", "127.0.0.1", "swe", "123"))
		cout<<"connect success"<<endl;
	else{
		cout<<"connect error"<<endl;
		exit(1);
	}
	run();
	
}

运行测试

在这里插入图片描述

windows下使用C++操作MySQL数据库 系统环境      操作系统:windows 7 64位      编译环境:visual studio 2015      MySQL版本: 5.6.31-log MySQL Community Server (GPL) 环境设置 1、将IDE设置为x64平台的,否则编译的时候会有警告,而且有些模块跟64位的MySQL对应不上导致编译链接失败。      project->项目的pr 阅读详情

相关推荐

C++ 连接数据库代码

1、配置 (1)c++包含库目录 (2)链接器附加库目录 (3)输入添加依赖项 (4)把MYSQL安装目录下的两个lib文件拷贝到项目目录下 (5)如果出现无法加载动态库libmysql.dll,则把上述文件也拷贝到C:\Windows\System32目录下 2、代码 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<Windows.h> #include<WinSock.h> #incl

qq_24447809的博客 2834

C/C++操作MySQL数据库——增、删、改、查

1、数据库链接 int cppDatebase::DatabaseConnect(sBit8 *uName,sBit8 *pWord,sBit8 *dbName) {   dbHandle = mysql_init(NULL);   if(NULL == dbHandle)   {     cout<<"mysql init error!"<<endl;    ...

weixin_30352645的博客 1034

C++重新入门小项目 连接MySQL的简易学生成绩系统

注:因为第一次写博客,所以可能有点啰嗦。 前言: 简单学过c++和数据库原理但是随着时间已经忘记了不少东西,这是我重新学习起C++和MYSQL的第一个小项目,因为有点懒没有把函数声明放到头文件里,创建的类没怎么使用,有些东西也弄得比较繁琐。 因为只是简单的重新学习了C++和SQL语句,里面用到的内容都比较简单,新手入门可以看看。如果还有其他不足,如编程习惯和规范不足等需要改进的东西,希望大佬们指正,谢谢。 背景: 简单重新学习C++后发现想链接MYSQL做个小程序,因为之前没有做过。...

qq_43847737的博客 2647

C++对Mysql数据库实现增删改查操作+常用API函数解释

本文是在简单学习过SQL语句后,打算使用C++语言对Mysql数据库实现相同功能。因为在项目中数据库的建立,表的创建都是最开始就定好的,可以在MySQL中直接执行SQL语句建立,并且项目过程中很少会对表的结构再做修改,所以自己练习只是实现一些C++对MySQL的简单操作,熟悉在C++中对MySQL操作的流程和方法。后期加入网络通讯自动接收并存储进数据库中。

destiny_fortune的博客 3088

c++ mysql mysql_field_C++操作MySQL数据库

C++操作mysql数据库主要有2种方式:1、通过C++ API方式调用2、通过mysql的Connector C++=============================================================================================================================================...

weixin_30748139的博客 781

YOLOv11多模态融合实战:基于YOLOFuse的RGB与红外线(IR)协同检测技术解析

本文深入解析了YOLOv11多模态融合技术,重点介绍基于YOLOFuse框架的RGB与红外线(IR)协同检测方法。通过动态权重分配、跨模态特征对齐等创新设计,实现在低光照等复杂环境下的高精度目标检测,mAP提升高达37%。文章包含实战案例、训练技巧和部署方案,为计算机视觉开发者提供完整的多模态融合解决方案。

weixin_29038345的博客 290

C++连接MySQL数据库实现对一个简单的学生信息系统的增删改查

(6)回到VS,继续打开解决方案的属性页——找到链接器——进入输入——附加依赖项——将libmysql.lib添加到依赖项中(末尾加上分号";(2)打开项目——右键解决方案——点击属性——点击VC++目录——将mysql.h文件路径添加到包含目录中去;(记得在路径末尾加上分号:";(3)在刚刚找到的mysql.h目录的上一级目录中,找到lib目录,进入lib目录,复制路径。中添加lib文件路径(同样在路径末尾加上分号";(1)在MySQL安装路径中找到。(5)进入lib目录,找到。这个文件,复制文件路径;

m0_50502677的博客 1960

手把手教你为ArduPilot添加自定义飞行模式:以自动巡检航线为例

本文详细介绍了如何为开源飞控ArduPilot添加自定义飞行模式,并以自动巡检航线为例,提供了从状态机设计、代码实现到地面站集成的完整开发指南。通过七步法手把手教学,帮助开发者深入理解飞控核心逻辑,实现无人机自主执行复杂巡检任务,满足行业应用定制需求。

weixin_29306875的博客 135

MySQL学习(7)-C++增删改查记录(CRUD)

研究好CRUD,软件中使用MySQL就轻轻松松~

Copperxcx的博客 1547

Arcgis 10.3 与 ArcGIS Engine 10.3 安装与破解

Arcgis 10.3 与 ArcGIS Engine 10.3 安装与破解

weixin_52127098的博客 4725

新手如何学习车载底层嵌入式软件开发(AutoSar)

汽车嵌入式开发

ACarSoft的博客 4219

【mySQL】C++操作mySql数据库(Mysql connector c++)

目录 前言 Connector C++ 使用 创建项目和配置 代码编写 使用中会遇到的问题 1.返回的结果中文乱码问题: 2,插入数据时出现Incorrect string value: '\xC0\xAD\xC0\xAD' for column 'user_name' at row 1,数据库无法识别的字符串错误 3、使用C++获取系统...

小鱼菜鸟的博客 1965

EU 2021/646 eCall工程拆解:MSD、测试模式与型式核准

紧急呼叫系统(eCall)是车载通信中面向事故救援的安全功能,其原理是在碰撞或人工触发后,通过蜂窝网络向公共安全应答点发送最小数据集(MSD),并建立语音链路。技术价值在于缩短救援响应时间、提升事故后生存率,应用场景覆盖乘用车、轻型商用车及车载T-Box等前装通信模块。面向欧盟市场时,EU 2021/646把eCall从安装要求推进到型式核准测试,关注触发链路、备用电源、GNSS定位、MSD字段、音频质量与回拨能力。工程落地需要围绕测试模式、字段校验、配置管理和送检样件建立可交付合规方案。

weixin_31815843的博客 208

C++数据库编程 MySQL Connecttor C++简介

文章目录1. 简介2. jDBC简介3. 优势 1. 简介 My SQL Connector C++是C++应用程序用于连接到MSqL服务器的数据库连接器,它遵循了JDBC规范。 下载地址:MySQL :: MySQL Community Downloads 选择版本: 开发文档: MySQL :: MySQL Connector/C++ 8.0 Developer Guide 2. jDBC简介 jDBC(Java database Connectivity,JAVA数据库连接)是Sun公司用来规

超级大洋葱的博客 1476

无迹卡尔曼滤波 (UKF, Unscented Kalman Filter) 算法详解及案例分析

无迹卡尔曼滤波是一种用于估计非线性系统状态的递归算法。其目标是通过结合系统模型和观测数据,估计系统的最优状态。

闲人编程的博客 2625

030、微透镜阵列与光场成像:从光场相机到深度感知的演进

文章摘要: 光场成像通过微透镜阵列(MLA)同时记录光线的位置与方向,实现单次曝光获取三维信息。其核心架构包括主镜头+MLA+传感器或相机阵列,各有分辨率与体积的权衡。光场支持先拍照后对焦和深度估计,但受限于微透镜基线短,精度较低。深度算法需结合多视角立体匹配与极平面图像分析,并处理噪声和温度漂移等实际问题。光场适用于短距离动态场景(如手势识别),而远距离高精度需求仍需激光雷达。建议初学者通过二手光场相机和开源工具入门,理解光场“角度域”与“空间域”的协同机制。

sundong_81的博客 50

C++数据库编程 MySQL Connecttor C++增删改查

文章目录1. Connector c++连接数据库2. 环境配置3. Connector c++插入数据4. Connector c++查询数据5. Connector c++修改数据6. Connector c++删除数据7. 示例代码 1. Connector c++连接数据库 下载 MySQL Connector C++头文件与库 下载 Boost头文件与库 使用 get_mysql_driver_instance0获取驱动实例 使用 connecto方法连接数据库 2. 环境配置

超级大洋葱的博客 3580

威纶通触摸屏与S7-1200以太网通信的具体方法和步骤(非常详细)

威纶通触摸屏与S7-1200以太网通信的具体方法和步骤(非常详细)

Robot_PLC_HMI_Automation 1万+

MYSQL++介绍

简介 MYSQL++是对于MYSQL C API的C++完全包装。 MYSQL++能够至少做如下几件事情 1. 连接数据库 通过TCP连接数据库 通过WINDOWS命名管道连接数据库 UNIX域SOCKET连接数据库 所有的链接操作可以通过使用mysqlpp::Connection类型进行,为了方便起见,mysqlpp还提供了TCPConnection,UnixDomainSocketConnection以及WindowsNamedPipeConnection。但是一般情况只需要通过Connection

web18224617243的博客 1129

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

linux c++ mysql_【菜鸟玩Linux开发】在C++里操作MySQL

MySQL是一个的开源关系型数据库,对于服务端开发来说是一个优秀的选择。本篇内容将介绍如何在C++程序里操作MySQL数据库。—————————————————————————————————————————————————————————————阅读本篇内容之前你需要先了解以下知识:C++编译链接基本原理make相关知识SQL基础知识和CRUD基础操作能力————————————————————...

weixin_30317869的博客 348

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

visual studio c++ 2015 连接mysql数据库

(如下图),在桌面找到电脑图标 -> 右键选中管理 -> 服务与应用程序 -> 双击服务,随后找到MySQL服务,选中之后选择属性 -> 登录 ,将登录身份改为系统账户登录即可,随后应用,确定之后,再回到mysql的安装界面。【注意】上述mysql版本我在安装时,选中的5.x的驱动,这块可以因人而异:如果vs是2019的较新版本可以安装8.0,如果是vs 2015推荐还是5.x!经过上述操作之后,vs 2015 + mysql的环境配置就正式搭建好了!2》同理将mysql的静态库目录加入vs项目配置中。

xaiolis的博客 1669

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

mfc连接mysql增删改查_C++ API方式连接mysql数据库实现增删改查

这里复制的http://www.bitscn.com/pdb/mysql/201407/226252.html一、环境配置1,装好mysql,新建一个C++控制台工程(从最简单的弄起,这个会了,可以往任何c++工程移植),在vs2010中设置,工程--属性--VC++目录--包含目录,将mysql server\include的绝对路径添加进去,例如C:\Program Files\MySQL\M...

weixin_32821263的博客 735
上一篇: c++实现一个高并发服务器(二)线程池
下一篇: libevent库学习 event_base和event
Sweler*19
博客等级 码龄7年 65粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值