c++ mysql数据库编程(linux系统)

ubuntu下mysql数据库的安装

ubuntu安装mysql(图文详解)-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/qq_58158950/article/details/135667062?spm=1001.2014.3001.5501

项目目录结构

数据库及表结构

public.h

//打印错误信息 

#ifndef PUBLIC_h
#define PUBLIC_H#include<iostream>
using namespace std;// 打印源文件的文件名、所造行号和时间戳
#define LOG(str)\cout<<__FILE__<<":"<<__LINE__<<" "<<\__TIMESTAMP__<<" : "<<str<<endl;#endif

这段代码是一个宏定义,它定义了一个名为 LOG 的宏。

  • __FILE__ 是一个预定义宏,它会在编译时被替换为当前源文件的文件名(包括路径)。
  • __LINE__ 也是一个预定义宏,它会在编译时被替换为当前代码所在的行号。
  • __TIMESTAMP__ 是一个非标准的宏,在许多编译器中并不支持。它被替换为编译时的时间戳。

该宏的作用是在输出日志时打印出当前源文件的文件名、所在行号和时间戳,以及传入的日志内容。

MySqlConn.hpp 

//与mysql进行交互的类,包括mysql的连接已经操作

#ifndef MYSQLCONN_H
#define MYSQLCONN_H
#include<string>
#include "mysql/mysql.h"class MySqlConn
{
public://初始化数据库连接MySqlConn();//释放数据库连接~MySqlConn();//连接数据库bool connection(string ip,unsigned short port,string user,string passwd,string dbname);// bool connection();//更新操作,insert,delete,updatebool update(string sql);//查询操作MYSQL_RES* query(string sql);private:MYSQL *_conn;
};
#endif

这段代码实现了一个 MySQL 数据库连接的封装类 MySqlConn,该类提供了以下功能:

  1. 初始化和释放数据库连接。
  2. 连接数据库。
  3. 执行更新操作(insert, delete, update)。
  4. 执行查询操作(select)并返回结果集。

MySqlConn.cpp 

#include "public.h"
#include "MySqlConn.hpp"//初始化数据库连接
MySqlConn::MySqlConn()
{//初始化数据库连接_conn=mysql_init(nullptr);
}
//释放数据库连接
MySqlConn::~MySqlConn()
{if(_conn!=nullptr){mysql_close(_conn);}
}//连接数据库
// bool MySqlConn::connection()
bool MySqlConn::connection(string ip,unsigned short port,string user,string passwd,string dbname)
{MYSQL* p=mysql_real_connect(_conn,//数据库连接//mysql数据库内部使用c风格的字符串,需要使用c_str()函数将string类型字符串进行转换ip.c_str(),//ip地址user.c_str(),//用户名passwd.c_str(),//密码dbname.c_str(),//数据库名称port,//mysql端口号nullptr,0);if(p){mysql_query(_conn,"SET NAME UTF8");// mysql_options(_conn, MYSQL_SET_CHARSET_NAME, "gb2312");}LOG("数据库连接成功!");return p;
}//更新操作
bool MySqlConn::update(string sql)
{//insert,delete,updateif(mysql_query(_conn,sql.c_str())){LOG("更新失败:"+sql);const char* errorMsg = mysql_error(_conn);LOG("错误信息:" + string(errorMsg));return false;}return true;
}
//查询操作,select
MYSQL_RES* MySqlConn::query(string sql)
{if(mysql_query(_conn,sql.c_str())){LOG("查询失败:"+sql);LOG("错误信息:" + string(mysql_error(_conn)));return nullptr;}return mysql_use_result(_conn);
}

sprintf() 函数是 C 语言标准库中的一个格式化输出函数,它的原型如下:

int sprintf(char *str, const char *format, ...);

sprintf() 函数的作用是将格式化的字符串输出到指定的字符数组 str。它的参数与 printf() 函数类似,第二个参数 format 是格式化字符串,后面的可变参数则是要输出的数据。

sprintf() 返回输出的字符数,如果出错,则返回一个负数。

sprintf() 函数可以用于将格式化的数据转换为字符串,然后将字符串输出到一个缓冲区中。

main.cpp

#include<iostream>
#include"public.h"
#include"MySqlConn.hpp"
using namespace std;int main()
{// LOG("this is log msg!!!");string ip = "127.0.0.1";string user = "root";string passwd = "123456";string dbname = "chat";MySqlConn conn;//创建mysql对象//定义sql语句char sql[1024]={0};sprintf(sql,"insert into user(name,age,sex) values('%s',%d,'%s')","jack",20,"male");//连接数据库conn.connection(ip,3306,user,passwd,dbname);//执行sqlconn.update(sql);return 0;
}

CMakeLists.txt

cmake_minimum_required(VERSION 3.0)
project(mysql)# 编译配置选项
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}  -g)# 配置可执行文件的生成路径
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)aux_source_directory(. SRC_LIST)add_executable(mysqltest ${SRC_LIST})
target_link_libraries(mysqltest mysqlclient)

进入build文件夹中编译

cmake ..
make

进入bin目录下执行

 查看结果

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

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

相关文章

【详解】通讯录项目

目录 通讯录项目要求&#xff1a; 引言&#xff1a; 步骤如下&#xff1a; 用户的数据类型&#xff1a; 初始化循序表&#xff1a; 菜单&#xff1a; 添加联系人&#xff1a; 删除联系人&#xff1a; 修改联系人&#xff1a; 查找联系人&#xff1a; 查看通讯录&…

《WebKit 技术内幕》之七(1): 渲染基础

《WebKit 技术内幕》之七&#xff08;1&#xff09;&#xff1a; 渲染基础 WebKit的布局计算使用 RenderObject 树并保存计算结果到 RenderObject 树。 RenderObject 树同其他树&#xff08;如 RenderLayer 树等&#xff09;&#xff0c;构成了 WebKit 渲染的为要基础设施。 1…

【RT-DETR有效改进】Google | EfficientNetV1一种超轻量又高效的网络 (附代码 + 添加教程)

前言 大家好&#xff0c;我是Snu77&#xff0c;这里是RT-DETR有效涨点专栏。 本专栏的内容为根据ultralytics版本的RT-DETR进行改进&#xff0c;内容持续更新&#xff0c;每周更新文章数量3-10篇。 专栏以ResNet18、ResNet50为基础修改版本&#xff0c;同时修改内容也支持Re…

python算法与数据结构---排序和归并排序

学习目标 掌握归并排序的基本原理使用python语言解答归并排序题目 归并排序 原理及过程 将两个有序的数组合并成一个有序数组称为从上往下分解&#xff1a;把当前区间一分为二&#xff0c;直至分解为若干个长度为1的子数组从上往下的合并&#xff1a;两个有序的子区域两两向…

Pytest 测试框架与Allure 测试报告——Allure2测试报告-L1

目录&#xff1a; allure2安装 Allure2介绍Allure2报告展示Allure2报告展示-首页概览Allure2报告展示-用例详情页Allure2安装Allure2下载与安装Allure环境验证插件安装-Python插件安装-Java验证插件安装-Javaallure2运行方式 生成测试报告流程使用Allure2运行方式-Python使用A…

大模型关键技术:上下文学习、思维链、RLHF、参数微调、并行训练、旋转位置编码、模型加速、大模型注意力机制优化、永久记忆、LangChain、知识图谱、多模态

大模型关键技术 大模型综述上下文学习思维链 CoT奖励建模参数微调并行训练模型加速永久记忆&#xff1a;大模型遗忘LangChain知识图谱多模态大模型系统优化AI 绘图幻觉问题从 GPT1 - GPT4 拆解GPTs 对比主流大模型技术点旋转位置编码层归一化激活函数注意力机制优化 大模型综述…

四种方法将 Docker Registry 迁移至 Harbor

Registry Docker Distribution Docker Distribution 是第一个是实现了打包、发布、存储和镜像分发的工具&#xff0c;起到 docker registry 的作用。&#xff08;目前 Distribution 已经捐赠给了 CNCF&#xff09;。其中 Docker Distribution 中的 spec 规范后来也就成为了 O…

Semaphone应用源码分析

Semaphone应用&源码分析 3.1 Semaphore介绍 sync&#xff0c;ReentrantLock是互斥锁&#xff0c;保证一个资源同一时间只允许被一个线程访问 Semaphore&#xff08;信号量&#xff09;保证1个或多个资源可以被指定数量的线程同时访问 底层实现是基于AQS去做的。 Semap…

开源进程/任务管理服务Meproc使用之HTTP API

本文讲述如何使用开源进程/任务管理服务Meproc的HTTP API管理整个服务。 Meproc所提供的全部 API 的 URL 都是相同的。 http://ip:port/proc例如 http://127.0.0.1:8606/proc在下面的小节中&#xff0c;我们使用curl命令向您展示 API 的方法、参数和请求正文。 启动任务 …

git 常规操作及设置

git 常规操作及设置 Git是一个分布式版本控制系统&#xff0c;可以用来跟踪文件的修改历史并与其他人进行协作开发。下面是一些常见的Git操作及设置&#xff1a; 初始化仓库&#xff1a;使用命令git init在当前目录创建一个新的Git仓库。 克隆仓库&#xff1a;使用命令git clo…

TCP/IP协议及配置、IP地址、子网掩码、网关地址、DNS与DHCP介绍

一、什么是服务器 能够为其他计算机提供服务的更高级的电脑 尺寸:Unit 1u1.75英寸44.45mm4.445cm IDC&#xff08;机房&#xff09; C/S结构 Client/Server客户端和服务端 二、TCP/IP协议 计算机与计算机之间通信的协议 三要素&#xff1a; IP地址 子网掩码 IP路由 I…

基于一次应用卡死问题所做的前端性能评估与优化尝试

问题背景 在上个月&#xff0c;由于客户反馈客户端卡死现象但我们远程却难以复现此现象&#xff0c;于是我们组织了一次现场上门故障排查&#xff0c;并希望基于此次观察与优化&#xff0c;为客户端开发提供一些整体的优化升级。当然&#xff0c;在尝试过程中&#xff0c;也发…

大模型实战营Day6 作业

基础作业 使用 OpenCompass 评测 InternLM2-Chat-7B 模型在 C-Eval 数据集上的性能 环境配置 conda create --name opencompass --clone/root/share/conda_envs/internlm-base source activate opencompass git clone https://github.com/open-compass/opencompass cd openco…

eMMC之分区管理、总线协议和工作模式

一、eMMC 简介 eMMC 是 embedded MultiMediaCard 的简称。MultiMediaCard&#xff0c;即MMC&#xff0c; 是一种闪存卡&#xff08;Flash Memory Card&#xff09;标准&#xff0c;它定义了 MMC 的架构以及访问 Flash Memory 的接口和协议。而eMMC 则是对 MMC 的一个拓展&…

【Docker】使用Docker安装Nginx及部署前后端分离项目应用

一、Nginx介绍 Nginx是一个高性能的HTTP和反向代理web服务器&#xff0c;同时也提供了IMAP/POP3/SMTP服务。它是由伊戈尔赛索耶夫为俄罗斯访问量第二的Rambler.ru站点开发的&#xff0c;公开版本1.19.6发布于2020年12月15日。其将源代码以类BSD许可证的形式发布&#xff0c;因它…

内网环境横向移动——利用windows服务

利用windows服务进行横向渗透主要是通过sc命令&#xff0c;但是注意这里跟之前windows远程命令相比多了一个条件&#xff0c;即当前主机需要为administrator权限。 sc命令 sc命令是XP系统中功能强大的DOS命令,SC命令能与“服务控制器”和已安装设备进行通讯。SC是用于与服务控…

SDCMS靶场通过

考察核心&#xff1a;MIME类型检测文件内容敏感语句检测 这个挺搞的&#xff0c;一开始一直以为检查文件后缀名的&#xff0c;每次上传都失败&#xff0c;上传的多了才发现某些后缀名改成php也可通过&#xff0c;png图片文件只把后缀名改成php也可以通过&#xff0c;之前不成功…

uniapp组件库Popup 弹出层 的使用方法

目录 #平台差异说明 #基本使用 #设置弹出层的方向 #设置弹出层的圆角 #控制弹窗的宽度 | 高度 #内容局部滚动 #API #Props #Event 弹出层容器&#xff0c;用于展示弹窗、信息提示等内容&#xff0c;支持上、下、左、右和中部弹出。组件只提供容器&#xff0c;内部内容…

CSS:backdrop-filter实现毛玻璃的效果

实现效果 实现代码 /* 关键属性 */ background-color: rgba(255, 255, 255, 0.4); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);完整代码 <style>/* 遮罩层 */.mo-mask {position: fixed;top: 0;bottom: 0;left: 0;right: 0;width: 100%;height…

【排序算法】五、冒泡排序(C/C++)

「前言」文章内容是排序算法之冒泡排序的讲解。&#xff08;所有文章已经分类好&#xff0c;放心食用&#xff09; 「归属专栏」排序算法 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 冒泡排序1.1 原理1.2 代码实现&#xff08;C/C&#xff09;1.3 特性总结 冒泡排序 1.1…