c++连接mysql

news2024/11/17 15:56:41

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.coloradmin.cn/o/1419688.html

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

相关文章

2023年算法CDO-CNN-BiLSTM-ATTENTION回归预测(matlab)

2023年算法CDO-CNN-BiLSTM-ATTENTION回归预测&#xff08;matlab&#xff09; CDO-CNN-BiLSTM-Attention切诺贝利灾难优化器优化卷积-长短期记忆神经网络结合注意力机制的数据回归预测 Matlab语言。 切诺贝利灾难优化器Chernobyl Disaster Optimizer (CDO)是H. Shehadeh于202…

新书推荐——《趣读数字经济》

文章目录 缘起:“躺嬴”的一天/ 001 第1章 名花解语,石心铁肠&#xff0c;当属“人工智能”/ 009 1.1 自学成才的人工智能/ 011 1.2 狂飙的话病ChatGPT / 017 1.3 算力、算法与数据:人工智能的核心/ 026 1.4 人工智能会抢走我们的饭碗吗/032 1.5 人工智能有多能/ 036 1.6 AI…

地址解析工具---AddressParseUtil

一、工具源码 package com.rural_vibration.common.utils;import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern;/*** description: 地址解析工具 <…

FTP服务之WindowsServer2019中搭建私有FTP服务器

WindowsServer2019搭建FTP服务器 文章目录 WindowsServer2019搭建FTP服务器1. 查看FTP服务是否开启2. 配置FTP服务站点3. 访问 1. 查看FTP服务是否开启 WindowsServer2019默认是开启FTP服务的&#xff0c;如果未开启&#xff0c;则按下面步骤开启即可 打开服务器管理 添加角色和…

java OA办公自动化系统

java OA办公自动化系统&#xff0c;java项目&#xff0c;springboot项目。eclipse和idea都能打开运行。 前端技术&#xff1a;Bootstrap&#xff0c;Jquery&#xff0c;My97 DatePicker&#xff0c;kindeditor&#xff0c;freemarker 后端技术&#xff1a;SpringBoot&#xf…

KVM 内存概述

KVM 内存概述 CPU缓存基本概念内存基本概念EPT和VPID内存过载使用大页透明大页透明大页使用 KSM NUMA CPU缓存基本概念 CPU工作过程中会直接读取内存的数据&#xff0c;而大部分同学对内存的感觉是内存条的一个概念&#xff0c;其实CPU中也有内存的概念&#xff0c;称之为L1-L…

langchain + hugginface入门体验

简介 本文记录一次使用langchain调用openai并部署在huggingface上的经历 安装环境依赖 我的python版本是3.9 pip install langchain pip install openai代码 app.py import streamlit as st # from langchain_community.chat_models import ChatOpenAI from langchain_openai …

qt5-入门

参考&#xff1a; qt学习指南 Qt5和Qt6的区别-CSDN博客 Qt 学习之路_w3cschool Qt教程&#xff0c;Qt5编程入门教程&#xff08;非常详细&#xff09; 本地环境&#xff1a; win10专业版&#xff0c;64位 技术选择 Qt5力推QML界面编程。QML类似HTML&#xff0c;可以借助CSS进…

【大数据】Flink SQL 语法篇(二):WITH、SELECT WHERE、SELECT DISTINCT

Flink SQL 语法篇&#xff08;二&#xff09; 1.WITH 子句2.SELECT & WHERE 子句3.SELECT DISTINCT 子句 1.WITH 子句 应用场景&#xff08;支持 Batch / Streaming&#xff09;&#xff1a;With 语句和离线 Hive SQL With 语句一样的&#xff0c;语法糖 1&#xff0c;使用…

15.Golang中的反射机制及应用

目录 概述实践基本应用复杂应用 结束 概述 Golang中的反射用法还是比较简单的 reflect.TypeOf(arg)reflect.ValueOf(arg) 实践 基本应用 package mainimport ("fmt""reflect" )func reflectNum(arg interface{}) {fmt.Println("type ", re…

专科拿到季军:微茫星火,奋起直追!

Datawhale干货 作者&#xff1a;“不啻微茫”团队&#xff0c;季军方案 前 言 大家好&#xff0c;我们是 飞桨星河社区 X 智海Mo平台 AI 大模型创意应用大赛 获奖团队——"不啻微茫"&#xff0c;很荣幸能有机会与大家分享这次比赛经验&#xff0c;我们从零开始的过程…

python打造光斑处理系统2:打开图像和默认图像

文章目录 打开图像默认图像 光斑处理&#xff1a;python处理高斯光束的图像 光斑处理系统&#xff1a;程序框架 打开图像 光斑图像的本质是光强在空间中的分布&#xff0c;而有的时候&#xff0c;通过CCD拍到的图像往往存成虚假的RGB格式&#xff0c;所以在打开图像时&#x…

AI大语言模型学习笔记之三:协同深度学习的黑魔法 - GPU与Transformer模型

Transformer模型的崛起标志着人类在自然语言处理&#xff08;NLP&#xff09;和其他序列建模任务中取得了显著的突破性进展&#xff0c;而这一成就离不开GPU&#xff08;图形处理单元&#xff09;在深度学习中的高效率协同计算和处理。 Transformer模型是由Vaswani等人在2017年…

【机器学习300问】20、什么是神经网络?和深度学习什么关系?

在学习深度学习的相关知识之前&#xff0c;我们首先得了解什么是神经网络&#xff0c;解开神经网络的神秘面纱后&#xff0c;什么是深度学习的问题也就迎刃而解。我依旧会采用我习惯的方式&#xff1a;先给出例子直观理解&#xff0c;在给出定义深入理解&#xff0c;最后在实际…

HarmonyOS NEXT 星河版项目案例

参考代码&#xff1a;HeimaHealthy: 鸿蒙项目案例练习 (gitee.com) 1.欢迎页面 Entry Component struct WelcomePage {State message: string Hello Worldbuild() {Column({space: 10}) {Row() {// 1.中央slogonImage($r(app.media.home_slogan)).width(260)}.layoutWeight(…

二叉搜索树的后序遍历序列

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 学习必须往深处挖&…

16.Golang结构体标签与json互转

目录 概述实践结束 概述 本文主要介绍 Golang 中结构体与json互相转化 实践 完整的代码如下&#xff1a; package mainimport ("encoding/json""fmt" )type Movice struct {Title string json:"title"Year int json:"year&qu…

【论文阅读|半监督小苹果检测方法S3AD】

论文题目 &#xff1a; : Semi-supervised Small Apple Detection in Orchard Environments 项目链接&#xff1a;https://www.inf.uni-hamburg.de/en/inst/ab/cv/people/wilms/mad.html 摘要&#xff08;Abstract&#xff09; 农作物检测是自动估产或水果采摘等精准农业应用不…

搭建 prometheus + grafana + springboot3 监控

下载安装包 下载prometheus&#xff1a;https://github.com/prometheus/prometheus/releases/download/v2.42.0/prometheus-2.42.0.windows-amd64.zip 下载grafana&#xff1a; https://dl.grafana.com/enterprise/release/grafana-enterprise-9.4.1.windows-amd64.zip Spr…

优化器刺客之limit 1--Order by col limit n 代价预估优化探索

一、现象 order by 排序加了limit后更慢了&#xff1f; test# explain analyze select userid from dba_users where username like %aaaaaaaaaaaaaaaaaa% order by userid ;QUERY PLAN --------------…