Ubuntu c++ MySQL数据库操作
mysql安装
sudo apt-get install update
sudo apt-get install mysql-server libmysqlclient-dev mysql-workbench
mysql启动/重启/停止
sudo service mysql start/restart/stop
登录mysql命令:mysql -uroot -p
错误异常:

解决办法:
修改mysqld.cnf配置文件
在ubuntu的terminal(也即终端)上输入sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf,进入到这个配置文件,然后在这个配置文件中的[mysqld]这一块中加入skip-grant-tables这句话。
[mysqld]
#
# * Basic Settings
#
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
skip-grant-tables
作用:就是让你可以不用密码登录进去mysql。
保存,退出。输入:service mysql restart,重新启动mysql。
重新登录设置密码。
代码
#include <iostream>
#include <mysql/mysql.h>using namespace std;
///
/// \brief sql_create 创建数据库
///
void sql_create()
{MYSQL mysql;mysql_init(&mysql);if(!mysql_real_connect(&mysql, "localhost", "root", "root", "mysql", 3306, NULL, 0)) {cout<<"mysql connect error: "<<mysql_error(&mysql)<<" "<<mysql_errno(&mysql)<<endl;}string str = "create database school;";mysql_real_query(&mysql, str.c_str(), str.size());str = "alter database school charset=utf8;";mysql_real_query(&mysql, str.c_str(), str.size());
// 自动生成id add数据时去掉id
// str = "create table school.students(id int(10) primary key auto_increment, name varchar(20) not null, age int(3) not null);";
//手动添加idstr = "create table school.students(id int(10) primary key , name varchar(20) not null, age int(3) not null);";mysql_real_query(&mysql, str.c_str(), str.size());mysql_close(&mysql);
}
///
/// \brief sql_add 增加数据
///
void sql_add()
{MYSQL mysql;mysql_init(&mysql);mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "utf8");mysql_options(&mysql, MYSQL_INIT_COMMAND, "SET NAMES utf8");if(!mysql_real_connect(&mysql, "localhost", "root", "root", "school", 3306, NULL, 0)) {cout<<"mysql connect error: "<<mysql_error(&mysql)<<" "<<mysql_errno(&mysql);}string str = "insert into students(id, name, age) values(1, \'张三\', 20)";mysql_real_query(&mysql, str.c_str(), str.size());str = "insert into students(id, name, age) values(2, \'李四\', 18)";mysql_real_query(&mysql, str.c_str(), str.size());str = "insert into students(id, name, age) values(3, \'王五\', 19)";mysql_real_query(&mysql, str.c_str(), str.size());str = "insert into students(id, name, age) values(4, \'赵六\', 21)";mysql_real_query(&mysql, str.c_str(), str.size());str = "insert into students(id, name, age) values(5, \'马七\', 20)";mysql_real_query(&mysql, str.c_str(), str.size());mysql_close(&mysql);
}
///
/// \brief sql_modify 修改数据
///
void sql_modify()
{MYSQL mysql;mysql_init(&mysql);mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "utf8");mysql_options(&mysql, MYSQL_INIT_COMMAND, "SET NAMES utf8");if(!mysql_real_connect(&mysql, "localhost", "root", "root", "school", 3306, NULL, 0)) {cout<<"mysql connect error: "<<mysql_error(&mysql)<<" "<<mysql_errno(&mysql);}string str = "update students set age = 30 where name = \'王五\'";mysql_real_query(&mysql, str.c_str(), str.size());mysql_close(&mysql);
}
///
/// \brief sql_delete 删除数据
///
void sql_delete()
{MYSQL mysql;mysql_init(&mysql);mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "utf8");mysql_options(&mysql, MYSQL_INIT_COMMAND, "SET NAMES utf8");if(!mysql_real_connect(&mysql, "localhost", "root", "root", "school", 3306, NULL, 0)) {cout<<"mysql connect error: "<<mysql_error(&mysql)<<" "<<mysql_errno(&mysql);}string str = "delete from students where name = \'赵六\'";mysql_real_query(&mysql, str.c_str(), str.size());mysql_close(&mysql);
}
///
/// \brief sql_query 查询数据
///
void sql_query()
{MYSQL mysql;mysql_init(&mysql);mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "utf8");mysql_options(&mysql, MYSQL_INIT_COMMAND, "SET NAMES utf8");if(!mysql_real_connect(&mysql, "localhost", "root", "root", "school", 3306, NULL, 0)) {cout<<"mysql connect error: "<<mysql_error(&mysql)<<" "<<mysql_errno(&mysql);}string str = "select * from students;";mysql_real_query(&mysql, str.c_str(), str.size());MYSQL_RES *result = mysql_store_result(&mysql);MYSQL_ROW row;while (row = mysql_fetch_row(result)) {cout<<"id: "<<row[0]<<" name: "<<row[1]<<" age: "<<row[2]<<endl;}mysql_free_result(result);mysql_close(&mysql);
}int main()
{cout << "Hello World!111" << endl;sql_create();cout << "Hello World!222" << endl;sql_add();cout << "Hello World!333" << endl;sql_query();cout << "Hello World!444" << endl;sql_modify();cout << "Hello World!555" << endl;sql_query();cout << "Hello World!666" << endl;sql_delete();cout << "Hello World!777" << endl;sql_query();return 0;
}
编译:
g++ main.cpp -lmysqlclient
运行结果:

相关文章:
Ubuntu c++ MySQL数据库操作
mysql安装sudo apt-get install updatesudo apt-get install mysql-server libmysqlclient-dev mysql-workbenchmysql启动/重启/停止sudo service mysql start/restart/stop登录mysql命令:mysql -uroot -p错误异常:解决办法:修改mysqld.cnf配…...
C++11:lambda表达式
文章目录1. 概念2. 语法3. 示例示例1示例2示例3示例44. 捕捉方式基本方式隐式和混合补充5. 传递lambda表达式示例6. 原理7. 内联属性1. 概念 lambda表达式实际上是一个匿名类的成员函数,该类由编译器为lambda创建,该函数被隐式地定义为内联。因此&#…...
【Android -- 开源库】表格 SmartTable 的基本使用
介绍 1. 功能 快速配置自动生成表格;自动计算表格宽高;表格列标题组合;表格固定左序列、顶部序列、第一行、列标题、统计行;自动统计,排序(自定义统计规则);表格图文、序列号、列标…...
自动化测试实战篇(9),jmeter常用断言方法,一文搞懂9种测试字段与JSON断言
Jmeter常用的断言主要有,JSON断言和响应断言这两种方式。 断言主要就是帮助帮助人工进行快速接口信息验证避免繁杂的重复的人工去验证数据 第一种响应断言Apply to:表示应用范围测试字段:针对响应数据进行不同的匹配响应文本响应代码响应信息…...
vue-virtual-scroll-list虚拟列表
当DOM中渲染的列表数据过多时,页面会非常卡顿,非常占用浏览器内存。可以使用虚拟列表来解决这个问题,即使有成百上千条数据,页面DOM元素始终控制在指定数量。 一、参考文档 https://www.npmjs.com/package/vue-virtual-scroll-li…...
C++学习笔记(以供复习查阅)
视频链接 代码讲义 提取密码: 62bb 文章目录1、C基础1.1 C初识(1) 第一个C程序(2)注释(3)变量(4)常量(5)关键字(6)标识符命名规则1.2 …...
备份时间缩短为原来 1/4,西安交大云数据中心的软件定义存储实践
XEDP 统一数据平台为西安交通大学云平台业务提供可靠的备份空间和强大的容灾能力,同时确保数据安全。西安交通大学(简称“西安交大”)是我国最早兴办、享誉海内外的著名高等学府,是教育部直属重点大学。学校现有兴庆、雁塔、曲江和…...
我国近视眼的人数已经超过了六亿,国老花眼人数超过三亿人
眼镜是一种用于矫正视力问题、改善视力、减轻眼睛疲劳的光学器件,在我们的生活中不可忽略的一部分,那么我国眼镜市场发展情况是怎样了?下面小编通过可视化互动平台对我国眼镜市场的状况进行分析。我国是一个近视眼高发的国家,据统…...
设计模式(十八)----行为型模式之策略模式
1、概述 先看下面的图片,我们去旅游选择出行模式有很多种,可以骑自行车、可以坐汽车、可以坐火车、可以坐飞机。 作为一个程序猿,开发需要选择一款开发工具,当然可以进行代码开发的工具有很多,可以选择Idea进行开发&a…...
VUE3入门基础:input元素的type属性值说明
说明 在Vue 3中,<input>元素的type属性可以设置不同的类型,以适应不同的输入需求。 常见的type属性取值如下: text:默认值,用于输入文本。password:用于输入密码,输入内容会被隐藏。em…...
关于供应链,一文教你全面了解什么是供应链
什么是供应链?供应链是指产品生产和流通过程中所涉及的原材料供应商、生产商、分销商、零售商以及最终消费者等成员通过与上游、下游成员的连接 (linkage) 组成的网络结构。也即是由物料获取、物料加工、并将成品送到用户手中这一过程所涉及的企业和企业部门组成的一…...
Scope作用域简单记录分析
类型 singleton 单例作用域 prototype 原型作用域 request web作用域,请求作用域,生命周期跟request相同,请求开始bean被创建,请求结束bean被销毁 session web作用域,会话作用域,会话开始bean被创建,会话结束bean被销毁 application web作用域,应用程序作用域,应用程序创建…...
ChatGPT创作恋爱甜文
林欣是一个长相可爱、性格呆萌的小姑娘,她年纪轻轻就失去了父母,独自一人面对世界的冷漠和残酷。 虽然经历了这样的打击,但她并没有沉沦,反而更加努力地去生活。 她找到了一份服务员的工作,每天在餐厅里穿梭…...
贝叶斯优化及其python实现
贝叶斯优化是机器学习中一种常用的优化技术,其目的是在有限步数内寻找函数的最大值或最小值。它可以被视为在探索不同参数配置与观察这些配置结果之间寻求平衡点的过程。基本思想是将我们在过去的观察和体验,传递到下一个尝试中,从而在等待数…...
Lombok使用@Builder无法build父类属性
文章目录问题描述解决方案使用示例lombok Builder注解和build父类属性问题1、简介2.使用3、Builder注解对类做了什么?问题描述 实体类使用Lombok的Builder来实现Builder模式,但是如果使用了extend继承,则子类无法通过Builder来Build父类属性…...
Pixhawk RPi CM4 Baseboard 树莓派CM4安装Ubuntu20.04 server 配置ros mavros mavsdk
文章目录硬件安装Ubuntu Server20.04下载rpiboot工具下载imager刷写系统配置USB配置WIFI开机安装桌面配置wifi配置串口安装ROS安装mavros安装MAVSDK-PythonInternet设置最后参考: https://docs.holybro.com/autopilot/pixhawk-baseboards/pixhawk-rpi-cm4-baseboard…...
后端开发过程中的安全问题
安全问题是木桶效应,整个系统的安全等级取决于安全性最薄弱的那个模块。在写业务代码的时候,要从我做起,建立最基本的安全意识,从源头杜绝低级安全问题。 1、数据源头的安全处理 对于 HTTP 请求,我们要在脑子里有一个…...
基于Hyperledger Fabric的学位学历认证管理系统
基于Hyperledger Fabric的学位学历认证管理系统 项目源码:https://github.com/Pistachiout/Academic-Degree-BlockChain 一、选题背景 学历造假、认证造假等是一个全球日益普遍的现象,不仅对社会产生了巨大的负面影响,同时也极大增加了企业…...
jq条件判断验证,正则表达式
// 判断是否包含为至少8位及以上字符,大小写字母及特殊字符 jQuery.validator.addMethod("isPwd", function (value, element) { var pwdRegex new RegExp((?.*[0-9])(?.*[A-Z])(?.*[a-z])(?.*[^a-zA-Z0-9]).{8,30}); return this.optional(elemen…...
23.3.9打卡 AtCoder Beginner Contest 259
A题 题解 对于x特判一下就好 代码 void solve() {ll x,d;cin>>n>>m>>x>>t>>d;if(n>m){nmin(n,x);if(n<m){cout<<t;return;}cout<<(m-n)*dt;}else{mmin(m,x);cout<<(m-n)*dt;}return; }B 三角函数全还给高中老师了 题…...
电力电子顶刊投稿避坑指南:TIE与TPEL审稿流程、周期及常见误区全解析
电力电子顶刊投稿策略全解析:从TIE到TPEL的实战避坑指南 在电力电子与电机驱动领域,IEEE Transactions on Industrial Electronics (TIE)和IEEE Transactions on Power Electronics (TPEL)无疑是研究者梦寐以求的发表平台。这两本期刊不仅代表着行业内的…...
告别单行输入:在Python IDLE Shell中轻松编辑多行代码的完整指南
告别单行输入:在Python IDLE Shell中轻松编辑多行代码的完整指南 对于Python初学者来说,IDLE Shell是一个既熟悉又陌生的存在。熟悉是因为它随Python安装包默认提供,陌生则源于大多数人仅将其视为简单的交互式命令行工具。实际上,…...
探索前沿技术趋势:2024年最值得关注的创新应用场景
1. 生成式AI的爆发式应用 2024年最让人兴奋的技术趋势,莫过于生成式AI从实验室走向千家万户。我最近测试了十几个主流AI创作工具,发现它们已经能完成许多过去认为"只有人类能做到"的任务。比如用Midjourney生成产品设计图,只需要简…...
SVPWM/AZSPWM的simulink仿真 AZSPWM(Advanced Zero Se...
SVPWM/AZSPWM的simulink仿真 AZSPWM(Advanced Zero Sequence Pulse Width Modulation,先进零序脉宽调制)是一种改进的脉宽调制技术,主要应用于三相逆变器中,通过引入零序分量来优化输出电压的波形和性能。 AZSPWM的目标…...
OpenClaw多设备同步:GLM-4.7-Flash配置共享方案
OpenClaw多设备同步:GLM-4.7-Flash配置共享方案 1. 为什么需要多设备同步配置? 去年冬天,我在办公室和家里两台MacBook上分别部署了OpenClaw对接GLM-4.7-Flash模型。很快发现一个头疼的问题:每次在办公室调试好的技能参数&#…...
开源AI助手竟能自主建频道、做视频?李宏毅深度解析“小龙虾”的神秘工作原理!
最近全网爆火的「养龙虾」到底是什么?为什么一个开源的 AI 助理项目,能让 AI 自己创建 YouTube 频道、自己做教学视频、24 小时自主干活? 台大李宏毅老师的这堂《解剖小龙虾 — 以 OpenClaw 为例介绍 AI Agent 的运作原理》,用最通…...
3508RAID卡RAID与JBOD模式对比:如何选择最适合你的存储方案?
3508RAID卡RAID与JBOD模式深度解析:从原理到实战的存储方案选择指南 当企业面临数据存储方案的选择时,3508RAID卡提供的RAID和JBOD模式常常让人陷入纠结。这两种模式看似简单,实则背后隐藏着截然不同的设计哲学和应用场景。本文将带您深入理解…...
别再只用Set5了!超分辨率模型训练,这5个开源数据集(DIV2K、Flickr2K等)的实战配置与对比
超分辨率模型训练:5个开源数据集的深度实战指南 在超分辨率研究领域,数据集的选择往往决定了模型性能的上限。许多开发者习惯性地使用Set5、Set14等小型数据集,却忽略了更丰富的数据资源可能带来的性能突破。本文将深入解析DIV2K、Flickr2K、…...
QGIS 3.28 保姆级配置指南:从中文界面到高德底图,手把手搞定智驾地图工作流
QGIS 3.28 智能驾驶地图工程师开箱指南:从零构建高精度工作流 刚拿到工牌的智能驾驶地图工程师小李,面对全新的QGIS界面有些手足无措。作为空间数据处理的核心工具,QGIS的配置直接决定了后续高精地图生产的效率与精度。本文将带你完成从软件…...
从GTS-800到GTS-400:手把手教你移植C#点胶机程序到不同固高控制卡
从GTS-800到GTS-400:工业点胶系统迁移实战指南 当生产线上的点胶机控制卡需要从GTS-800更换为GTS-400时,许多工程师会发现"使用方法类似"这个说法背后隐藏着大量细节差异。去年我们团队完成了一个医疗设备点胶系统的迁移项目,原计划…...
