C++orm使用插曲——MySQL保留字

近日开始对数据库开始涉猎,在编写数据库操作类调试过程中遇到一个问题:

mysql> select * from environmental_variable_table where key='temperature' AND dev_ip='192.168.1.1';
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'key='temperature' AND dev_ip='192.168.1.1'' at line 1
mysql> 

部分涉及代码如下:

struct environmental_variable_table
{std::string station_num;std::string dev_type;std::string dev_nid;std::string dev_sn;std::string dev_ip;std::string key;std::string m_value;std::string value_desc;
};
REFLECTION(environmental_variable_table, station_num, dev_type, dev_nid, dev_sn, dev_ip, key, m_value, value_desc)class CEnvironmentalVariableTable
{
private:dbng<mysql> m_mysql;bool connectDB(){return m_mysql.connect(MYSQL_IP, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE);}public:CEnvironmentalVariableTable(){if (!connectDB()){throw std::runtime_error("Failed to connect to the database.");}}void addData(const environmental_variable_table &envVar){if (!m_mysql.insert(envVar)){throw std::runtime_error("Failed to insert environmental variable.");}}void addData(const std::vector<environmental_variable_table> &envVars){if (!m_mysql.insert(envVars)){throw std::runtime_error("Failed to insert environmental variables.");}}environmental_variable_table getData(const std::string &key, const std::string &dev_ip){auto result = m_mysql.query<environmental_variable_table>("key='" + key + "' AND dev_ip='" + dev_ip + "'");if (result.empty()){throw std::runtime_error("Failed to retrieve environmental variable or variable not found. key=" + key + ", dev_ip=" + dev_ip);}return result.front();}void updateData(const std::string &key, const std::string &dev_ip, const environmental_variable_table &updatedEnvVar){if (!m_mysql.update(updatedEnvVar, "key='" + key + "' AND dev_ip='" + dev_ip + "'")){throw std::runtime_error("Failed to update environmental variable.");}}void removeData(const std::string &key, const std::string &dev_ip){if (!m_mysql.execute("delete from environmental_variable_table where key='" + key + "' AND dev_ip='" + dev_ip + "'")){throw std::runtime_error("Failed to remove environmental variable.");}}
};

这段的代码实际是对数据库表封装的一个工具模板。

经过调查发现,类似于key这样的内容是一个保留字,在 SQL 中,KEY 是一个保留字,如果你的表中有一个列名叫做 key,你需要使用反引号将其包围起来,以便正确执行查询。

或者直接修改名称。这里我将key 修改为了m_key,解决了问题。

同样的,这里把相关的类似保留字都列出来,防止再出现类似的问题。
以下是一些常见的 MySQL 保留字及其含义:

保留字含义
ADD添加新列或索引到表中
ALTER修改表结构
AND逻辑运算符 AND
AS重命名列或表
BETWEEN在某个范围内
BY按照某种方式
CREATE创建数据库或表
DELETE删除记录
FROM从哪个表中检索数据
GROUP BY按照某个列分组
HAVING对 GROUP BY 的结果进行条件过滤
IN在某个值列表中
INSERT插入记录
INTO插入数据的目标表
IS判断是否为某个值
JOIN连接两个或多个表
KEY索引关键字
LIKE模糊匹配
NOT逻辑运算符 NOT
NULL空值
OR逻辑运算符 OR
ORDER BY按照某个列排序
SELECT查询数据
SET设置变量值
UPDATE更新记录
VALUES插入数据的值列表
WHERE指定条件

分享一个有趣的 学习链接:https://xxetb.xet.tech/s/HY8za

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/2046.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C语言进阶篇】offsetof宏的介绍 及其实现

目录 一、offsetof宏的介绍 头文件 &#xff1a; offsetof宏的通用形式&#xff1a; 参数说明&#xff1a; 用法举例&#xff1a; 二、offsetof宏的实现 三、offsetof宏的使用注意事项 个人主页&#xff1a; 倔强的石头的博客 系列专栏 &#xff1a;C语言指南 …

Java中的动态代理

动态代理 什么是代理程序为什么需要代理例子如何创建代理对象 应用场景 什么是代理 程序为什么需要代理 对象如果认为身上干的事太多&#xff0c;可以通过代理来转移部分职责&#xff1b; 对象有什么方法想被代理&#xff0c;代理就一定要有对应的方法 使用接口实现&#xf…

iPerf 3 测试UDP和TCP方法详解

文章目录 前言一、What is iPerf / iPerf3 ?二、功能1. TCP and SCTP2. UDP3. 其他 三、 Iperf的使用1.Iperf的工作模式2. 通用指令3. 服务端特有选项4. 客户端特有选项5. -t -n参数联系 四、Iperf使用实例1. 调整 TCP 连接1. 1TCP 窗口大小调节1. 2 最大传输单元 (MTU)调整 2…

Pyhton Sqlite3手机数据库

代码结果 Code import sqlite3 connsqlite3.connect(test.db) csconn.cursor() create_tb_sqlcreate table if not exists info(id int primary key,name text,age int)cs.execute(create_tb_sql)# cs.execute(insert into info(id,name,age) values(3,"dog_Senior&quo…

华为交换机重置密码

1.进入bootrom 加电后&#xff0c;18S左右&#xff0c;在启动菜单按 CtrlB 进入bootrom&#xff08;3s内&#xff09; 注意&#xff1a;本步骤属于高危操作&#xff0c;一定小心切勿删除系统或修改bootrom密码&#xff01; 输入bootrom密码&#xff0c;按6 看到提示成功后按…

科技云报道:AIGC掀算力需求革命,边缘计算将不再“边缘”

科技云报道原创。 随着以大模型为代表的AIGC时代拉开序幕&#xff0c;算力需求持续爆发&#xff0c;AI与边缘深度融合已是大势所趋&#xff0c;越来越多的企业开始积极布局GenAI。 GenAI技术的商用化部署和应用成为企业竞逐的新阵地&#xff0c;勾勒出大模型从“技术力”转向…

web漏洞合集描述和修复建议

完整Excle文件可移步至知识星球查看下载 星球不定时分享网上各种资料&#xff0c;欢迎大家加入交流。

MongoDB聚合运算符:$setIntersection

MongoDB聚合运算符&#xff1a;$setIntersection 文章目录 MongoDB聚合运算符&#xff1a;$setIntersection语法使用举例元素数组举例检索授予当前用户角色的文档创建角色创建用户创建集合使用John登录检索文档检查文档使用Jane登录检索文档验证文档 $setIntersection聚合运算符…

NX二次开发UF_LAYER(图层相关操作)常用函数

目录 一、概述 二、函数的介绍 2.1 UF_LAYER_ask_category_info &#xff08;查询图层类别信息&#xff09; 2.2 UF_LAYER_ask_category_tag&#xff08;查询图层类别TAG&#xff09; 2.3 UF_LAYER_ask_status&#xff08;查询图层的状态&#xff09; 2.4 UF_LAYER_ask_wo…

在终端使用DOCKER部署ollama

什么是ollama&#xff0c;可以看作管理AI模型的一个命令行工具 ollama -h 可以查看帮助&#xff0c;可以进行删减&#xff0c;下载启动等操作 这里主要使用DOCKER部署ollama&#xff0c;这样即可兼容windows 苹果 Linux 系统 这里我主要介绍在Linux 系统下部署 1. 首先是安…

组件挂载:虚拟DOM如何转化为真实DOM

在React中&#xff0c;当组件首次挂载时&#xff0c;虚拟DOM会被创建并被用来描述组件的UI结构。虚拟DOM是一个JavaScript对象&#xff0c;它是轻量级的、独立于平台的表示。虚拟DOM是React使用的一个重要概念&#xff0c;它允许React在更新UI时更高效地进行比较和渲染操作。 …

docker 报错 error adding seccomp filter rule for syscall clone3

网上有一些说法&#xff0c;例如重新安装docker 但是我自己尝试&#xff0c;用 –security-opt seccompunconfined 就可以&#xff0c;但是需要把这个命令放到紧挨着run的位置&#xff0c;如果放到偏后的位置&#xff0c;可能不起作用。 以下命令是其他网友启动是的命令&…

kaggle使用深度学习的logistic回归方法实现疟疾细胞图像分类

目录 数据集概述 依赖环境 代码概述 导包 数据处理 数据可视化 模型结构搭建 模型迭代训练 初始化和准备 训练过程 评估 模型验证评估 计算准确率 打印分类报告 绘制混淆矩阵 展示 配套数据集与代码下载链接 数据集概述 《疟疾细胞图像数据集》对于医学图像分…

UG10.如何设置鼠标滚轮操作模型放大缩小方向?

UG10.如何设置鼠标滚轮操作模型放大缩小方向呢&#xff1f;看一下具体操作步骤吧。 首先打开UG10.软件&#xff0c;在主菜单栏选择【文件】下拉菜单&#xff0c;选择【实用工具】。 点击【用户默认设置】。 文章源自四五设计网-https://www.45te.com/45545.html 选中【基本环…

Apollo核心原理之眼前一亮

Apollo配置中心的实现原理&#xff0c;apollo的发布配置推送变更消息就是用DeferredResult实现的。它的大概实现步骤如下&#xff1a; apollo客户端会像服务端发送长轮询http请求&#xff0c;超时时间60秒当超时后返回客户端一个304 httpstatus,表明配置没有变更&#xff0c;客…

C++ //练习 13.1 拷贝构造函数是什么?什么时候使用它?

C Primer&#xff08;第5版&#xff09; 练习 13.1 练习 13.1 拷贝构造函数是什么&#xff1f;什么时候使用它? 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工具&#xff1a;vim 解释 拷贝构造函数是将已有的对象拷贝到正在创建的对象中。当我们需要对…

mongodb 安装问题

1. mongodb启动时显示 Illegal instruction (core dumped) mongodb 5.0之后(包括5.0) 开始使用需要使用 AVX 指令集 2.启动时报错 ERROR: child process failed, exited with 1 通过指令 bin/mongod --repair 查看报错信息 根据报错信息进行修改

Ps 滤镜:波浪

Ps菜单&#xff1a;滤镜/扭曲/波浪 Filter/Distort/Wave 波浪 Wave滤镜可以在图像上创建复杂且可控的波浪形变效果。此滤镜提供了丰富的选项&#xff0c;可以精确调整波浪的形状、大小和分布&#xff0c;以实现不同的视觉效果。 “波浪”滤镜通过对图像应用数学波形函数来扭曲图…

自己写的加密案例4——某东方课程头部sign加密

网址&#xff1a;aHR0cHM6Ly9kc2FwaS54ZGYuY24vcHJvZHVjdC92Mi9jbGFzcy9zZWFyY2g 进行抓包分析&#xff0c;发现请求头中由sign加密&#xff0c;简单判断是消息摘要算法。 Sign:d7c68100ca508bb7c8ae284560754303 进行xhr断点&#xff0c;一下子就发现了位置。 s c.sign&…

linux下 Mysql8.0 离线安装

环境&#xff1a;centos7.9 MysqlL8.0.36安装包 链接&#xff1a;https://pan.baidu.com/s/1bKwHr05z8Ye82dT9tntdUA 提取码&#xff1a;3a5z 参考Centos安装MYSQL8(离线可用) 文章目录 1、解压安装2、配置启动2.1 修改配置文件2.2 mysql 启动 3、mysql 测试 1、解压安装 #…