c++连接mysql

c++连接mysql

  • 安装mysql以及c++对应的库
  • 进入数据库,创建数据库,表,并新建管理员用户
  • 编写c++代码
  • 编译运行,测试结果
  • 头文件解释

安装mysql以及c++对应的库

sudo apt-get update
sudo apt-get install mysql-server
sudo apt-get install libmysqlcppconn-dev

细节请看:https://blog.csdn.net/shizuguilai/article/details/135840134

进入数据库,创建数据库,表,并新建管理员用户

使用root进入数据库

 mysql -u root -p
# 建立数据库
CREATE DATABASE userDB;
# 选择数据库
USE userDB;
# 创建数据表
CREATE TABLE users (id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,username VARCHAR(50) NOT NULL UNIQUE,password VARCHAR(255) NOT NULL,email VARCHAR(100) NOT NULL UNIQUE
);
# 创建管理员用户(记得修改密码)
CREATE USER 'manager' IDENTIFIED BY 'user_password';
# 为管理员分配userDB数据库的所有权限
GRANT ALL PRIVILEGES ON userDB.* TO 'manger';
# 也可以单独赋予特定权限
# GRANT SELECT, INSERT, UPDATE ON userDB.* TO 'manger';
# 立即生效
FLUSH PRIVILEGES;
# 退出数据库
exit

编写c++代码

#include <iostream>
#include <stdexcept>
#include <mysql_driver.h>
#include <mysql_connection.h>
#include <cppconn/prepared_statement.h>
#include <cppconn/resultset.h>int main() {try {sql::mysql::MySQL_Driver* driver;sql::Connection* con;sql::PreparedStatement* pstmt;sql::ResultSet* res;// 初始化驱动driver = sql::mysql::get_mysql_driver_instance();// 创建连接con = driver->connect("tcp://127.0.0.1:3306", "manager", "你的密码");// 连接到指定的数据库con->setSchema("userDB");// 插入一个用户pstmt = con->prepareStatement("INSERT INTO users(username, password, email) VALUES (?, ?, ?)");pstmt->setString(1, "testUser");pstmt->setString(2, "testPassword");pstmt->setString(3, "test@example.com");pstmt->executeUpdate();delete pstmt;// 查询已有的用户pstmt = con->prepareStatement("SELECT id, username, email FROM users");res = pstmt->executeQuery();while (res->next()) {std::cout << "ID: " << res->getInt("id");std::cout << ", Username: " << res->getString("username");std::cout << ", Email: " << res->getString("email") << std::endl;}delete res;delete pstmt;delete con;} catch (sql::SQLException &e) {std::cerr << "# ERR: SQLException in " << __FILE__;std::cerr << "(" << __FUNCTION__ << ") on line " << __LINE__ << std::endl;std::cerr << "# ERR: " << e.what();std::cerr << " (MySQL error code: " << e.getErrorCode();std::cerr << ", SQLState: " << e.getSQLState() << " )" << std::endl;}return EXIT_SUCCESS;
}

编译运行,测试结果

g++ test.cpp -lmysqlcppconn
./a.out

在这里插入图片描述

头文件解释

每个头文件包含在C++程序中通常用于实现特定功能。在您提供的代码中,头文件涉及基本输入/输出操作,异常处理,以及与MySQL数据库的连接和交互。下面是每个头文件的简要解释:

  1. <iostream>: 这个头文件是C++标准库的一部分,用于输入输出操作。它提供了标准输入输出流对象,如 std::cin, std::cout, std::cerr。通常用于数据的读取和显示。

  2. <stdexcept>: 这个头文件也是C++标准库的一部分,包含了标准异常类,如 std::exception, std::runtime_error, std::out_of_range 等。这些异常类可以在程序运行中出现问题时抛出和捕获异常。

  3. <mysql_driver.h>: 这是MySQL Connector/C++的一部分,用于实现与MySQL数据库的连接。它提供了连接数据库的驱动程序。

  4. <mysql_connection.h>: 同样是MySQL Connector/C++的一部分,这个头文件定义了与MySQL数据库的连接。它提供了建立、管理和关闭数据库连接的功能。

  5. <cppconn/prepared_statement.h>: 这个文件是MySQL Connector/C++中的一部分,用于处理预处理语句。预处理语句是一种提高数据库效率和安全性的方式,可以执行参数化的SQL语句。

  6. <cppconn/resultset.h>: 这个头文件提供了处理SQL语句执行结果的功能。通过这个文件中定义的类和方法,可以读取和操作数据库查询返回的数据。

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

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

相关文章

CISAW和CISP-PTE证书选择指南

&#x1f4e3;在信息安全领域&#xff0c;选择合适的证书可以为你的职业生涯增添光彩。很多从事信息渗透行业的朋友经常讨论CISP-PTE和CISAW之间的选择问题。今天就从4个方面带你详细了解这两张证书&#xff0c;帮你做出明智的选择&#xff01; 1️⃣证书的行业前景 &#x1f4…

python爬虫爬取网站

流程&#xff1a; 1.指定url(获取网页的内容) 爬虫会向指定的URL发送HTTP请求&#xff0c;获取网页的HTML代码&#xff0c;然后解析HTML代码&#xff0c;提取出需要的信息&#xff0c;如文本、图片、链接等。爬虫请求URL的过程中&#xff0c;还可以设置请求头、请求参数、请求…

Ubuntu系统安装 Redis

环境准备 Ubuntu 系统版本&#xff1a;22.04.3Redis 版本&#xff1a;6.2.12 检查本地 make 环境 make -version若没有安装&#xff0c;则需要安装 sudo apt install make检查本地 gcc 环境 gcc -version若没有安装&#xff0c;则需要安装 sudo apt install gcc。 sudo a…

Single-Head ViT;Faster Whisper;Transformer KF;Pick-and-Draw

本文首发于公众号&#xff1a;机器感知 Single-Head ViT&#xff1b;Faster Whisper&#xff1b;Transformer KF&#xff1b;Pick-and-Draw SHViT: Single-Head Vision Transformer with Memory Efficient Macro Design Recently, efficient Vision Transformers have shown …

【遥感专题系列】遥感影像信息提取之——人工目视解译

​遥感影像通过亮度值或像元值的高低差异&#xff08;反映地物的光谱信息&#xff09;及空间变化&#xff08;反映地物的空间信息&#xff09;来表示不同地物的差异&#xff0c;这是区分不同影像地物的物理基础。 ​人工解译是目前国内使用最多的一种影像提取方法&#xff0c;如…

算法练习-螺旋矩阵(思路+流程图+代码)

难度参考 难度&#xff1a;中等 分类&#xff1a;数组 难度与分类由我所参与的培训课程提供&#xff0c;但需要注意的是&#xff0c;难度与分类仅供参考。以下内容均为个人笔记&#xff0c;旨在督促自己认真学习。 题目 给定一个正整数n&#xff0c;生成一个包含1到 n^2 所有元…

API网关-Apisix RPM包方式自动化安装配置教程

文章目录 前言一、简介1. etcd简介2. APISIX简介3. apisix-dashboard简介 二、Apisix安装教程1. 复制脚本2. 增加执行权限3. 执行脚本4. 浏览器访问5. 卸载Apisix 三、命令1. Apisix命令1.1 启动apisix服务1.2 停止apisix服务1.3 优雅地停止apisix服务1.4 重启apisix服务1.5 重…

Android矩阵Matrix变换setRectToRect,Kotlin

Android矩阵Matrix变换setRectToRect&#xff0c;Kotlin 在 Android画布Canvas裁剪区域clipRect&#xff0c;Kotlin-CSDN博客 基础上&#xff0c;增加一个点&#xff0c;通过setRectToRect挖出Bitmap原图中心区域的一块放到目标RectF里面。 import android.content.Context imp…

Google Chrome 常用的几个参数

1 右键--Google Chrome--属性--目标 参数作用--disable-infobars此计算机将不会再收到 Google Chrome 更新&#xff0c;因为 Windows XP 和 Windows Vista 不再受支持。适用于 xp、2003 的 49.x.x.x 版本。示例1--ingore-certificate-errors忽略证书错误--disable-background-…

知识库建设这些工具来帮忙,企业工作效率翻倍

在当今深度信息化的年代&#xff0c;知识库成了企业不可或缺的一部分&#xff0c;它的建设与管理显得格外重要。然而&#xff0c;想要建设又好又高效的知识库并非易事。好消息是&#xff0c;有很多优秀的工具可以让这个过程变得更加轻松&#xff0c;今天我们就重点来探讨其中的…

excel中去掉单元格中两个数字之间的空格

excel中去掉单元格中两个数字之间的空格 使用公式&#xff1a;SUBSTITUTE(A1," “,”") 解释&#xff1a;将A1单元格中的空格查找出来并去掉。

搭建WebGL开发环境

前言 本篇文章介绍如何搭建WebGL开发环境 WebGL WebGL的技术规范继承自免费和开源的OpenGL ES标准&#xff0c;从某种意义上说&#xff0c;WebGL就是Web版的OpenGL ES&#xff0c;而OpenGL ES是从OpenGL中派生出来的。他们的应用环境有区别&#xff0c;一般来说&#xff1a;…

C++:第十四讲动态规划初步

每日C知识 想要在做C小游戏里实现等待效果&#xff0c;可以用Sleep。 Sleep函数可以使计算机程序&#xff08;进程&#xff0c;任务或线程&#xff09;进入休眠&#xff0c;使其在一段时间内处于非活动状态。 一般需要头文件windows.h。 注意"Sleep"首字母要大写…

ppt背景图片怎么设置?让你的演示更加出彩!

PowerPoint是一款广泛应用于演示文稿制作的软件&#xff0c;而背景图片是演示文稿中不可或缺的一部分。一个好的背景图片能够提升演示文稿的整体效果&#xff0c;使观众更加关注你的演示内容。可是ppt背景图片怎么设置呢&#xff1f;本文将介绍ppt背景图片设置的三个方法&#…

Spring-boot项目+Rancher6.3部署+Nacos配置中心+Rureka注册中心+Harbor镜像仓库+NFS存储

目录 一、项目概述二、环境三、部署流程3.1 Harbor部署3.1.1 docker安装3.1.2 docker-compose安装3.1.3 安装证书3.1.4 Harbor下载配置安装 3.2 NFS存储搭建3.3 Rancher平台配置3.3.1 NFS存储相关配置3.3.2 Harbor相关配置3.3.3 Nacos部署及相关配置3.3.4 工作负载deployment配…

ubuntu20.04 安装ROS2 记录

主要参考B站古月居的ROS2入门21讲 和 以下链接&#xff08;基本和视频上一致&#xff09; ubuntu20.04安装ROS2 详细教程_ubuntu20.04 ros2-CSDN博客 但是中间有些需要注意的地方&#xff0c; 1&#xff0c;添加源 步骤中提到 sudo curl -sSL https://raw.githubuserconten…

Redis冲冲冲——缓存三兄弟:缓存击穿、穿透、雪崩

目录 引出缓存击穿缓存穿透缓存雪崩 总结 引出 谈谈redis的击穿、穿透、雪崩。 缓存击穿 缓存击穿&#xff1a;redis中没有&#xff0c;但是数据库有 顺序&#xff1a;先查缓存&#xff0c;判断缓存是否存在&#xff1b;如果缓存存在&#xff0c;直接返回数据&#xff1b;如果…

【前端素材】bootstrap3 实现地产置业公司source网页设计

一、需求分析 地产置业公司的网页通常是该公司的官方网站&#xff0c;旨在向访问者提供相关信息和服务。这些网页通常具有以下功能&#xff1a; 公司介绍&#xff1a;网页通常包含有关公司背景、历史、核心价值观和使命等方面的信息。此部分帮助访问者了解公司的身份和目标。 …

人工视觉仍然需要图像采集卡

最初&#xff0c;图像采集卡被用作模拟视频数字转换器和图像缓冲器&#xff0c;但如今它们能够执行复杂的任务&#xff0c;例如图像处理。图像采集卡的设计不断发展&#xff0c;旨在提高系统性能并减少计算机处理需求。 除了图像采集之外&#xff0c;图像采集卡还执行机器视觉…

芯片跨时钟域设计(二)

芯片培训(真实项目)介绍&#xff1a; 低功耗景芯SoC前端、中端、后端全流程实战培训(火爆订购中) DDR4/3项目实战培训 ARM Cortex-A72处理器12nm PR实战培训 ARM Cortex-A72处理器12nm DFT实战培训 ARM Cortex-A7处理器28nm PR实战培训(火爆价格战) RISC-V MCU 40nm全芯片…