[C/C++] -- 访问Linux环境MySQL数据库

1.C++编程访问MySQL

查询MySQL是否安装成功

dpkg -l | grep libmysqlclient 
# 查看系统中是否安装了与 MySQL 客户端库相关的软件包。这个命令会列出所有包含 libmysqlclient 字样的软件包,以便确认是否已安装相关库。ldconfig -p | grep mysqlclient 
# 查看系统中已经缓存的动态链接库信息,以确定是否已经有 mysqlclient 库被缓存。

CMakLists链接库文件

# 指定可执行文件链接时需要依赖的库文件
target_link_libraries(mysqlclient)

db.h

// 数据库操作类
class MySQL
{
public:// 初始化数据库连接MySQL();// 释放数据库连接资源// 这里用UserModel示例,通过UserModel如何对业务层封装底层数据库的操作。代码示例如下:~MySQL();// 连接数据库bool connect();// 更新操作bool update(string sql);// 查询操作MYSQL_RES *query(string sql);
private:MYSQL *_conn;
};

db.cpp

// 数据库配置信息
static string server = "127.0.0.1";
static string user = "root";
static string password = "123";
static string dbname = "database";// 初始化数据库连接
MySQL::MySQL()
{_conn = mysql_init(nullptr);
}
// 释放数据库连接资源
// 这里用UserModel示例,通过UserModel如何对业务层封装底层数据库的操作。代码示例如下:
MySQL::~MySQL()
{if (_conn != nullptr)mysql_close(_conn);
}
// 连接数据库
bool MySQL::connect()
{MYSQL *p = mysql_real_connect(_conn, server.c_str(), user.c_str(),password.c_str(), dbname.c_str(), 3306, nullptr, 0);if (p != nullptr){// C和C++代码默认的编码字符是ASCII,如果不设置,从MySQL上拉下来的中文显示乱码mysql_query(_conn, "set names gbk");}return p;
}
// 更新操作
bool MySQL::update(string sql)
{if (mysql_query(_conn, sql.c_str())){LOG_INFO << __FILE__ << ":" << __LINE__ << ":"<< sql << "更新失败!";return false;}return true;
}
// 查询操作
MYSQL_RES *MySQL::query(string sql)
{if (mysql_query(_conn, sql.c_str())){LOG_INFO << __FILE__ << ":" << __LINE__ << ":"<< sql << "查询失败!";return nullptr;}return mysql_use_result(_conn);
}

2.创建数据库、表

CREATE DATABASE IF NOT EXISTS database;
USE database;

CREATE TABLE user (id INT NOT NULL AUTO_INCREMENT,name VARCHAR(50) NOT NULL,password VARCHAR(50) NOT NULL,state ENUM('online','offline') DEFAULT 'offline',PRIMARY KEY (id),UNIQUE KEY (name)
);

3.生成.sql脚本

mysqldump -u username -p --no-data database_name > schema.sql
  • username 是你的 MySQL 用户名
  • database_name 是你要导出结构的数据库名称
  • schema.sql 是输出的 SQL 脚本文件名

--no-data 参数用于指定只导出结构而不包括数据。如果需要同时导出数据,请去掉该参数。

4.执行.sql脚本

mysql -u username -p database_name < file.sql

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

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

相关文章

Opencv实战(2)绘图与图像操作

Opencv实战(2)绘图与图像操作 指路前文&#xff1a;Opencv实战(1)读取与像素操作 三、基本绘图 文章目录 Opencv实战(2)绘图与图像操作三、基本绘图(1).line(2).rectangle(3).circle 四、图像处理(1).颜色空间1.意义2.cvtColor()3.inRange()4.适应光线 (2).形态操作1.腐蚀2.膨…

C++的deque容器->基本概念、构造函数、赋值操作、大小操作、插入和删除、数据存取、排序

#include<iostream> using namespace std; #include <deque> //deque构造函数 void printDeque(const deque<int>& d) { for (deque<int>::const_iterator it d.begin(); it ! d.end(); it) { //*it 100; 容器中的数据不可以修…

深入探索Linux:ACL权限、特殊位与隐藏属性的奥秘

前言&#xff1a; 在Linux系统中&#xff0c;文件和目录的权限管理是一项至关重要的任务。它决定了哪些用户或用户组可以对文件或目录执行读、写或执行等操作。传统的Linux权限模型基于用户、组和其他的概念&#xff0c;但随着时间的推移&#xff0c;这种模型在某些情况下显得…

VR系统的开发流程

虚拟现实&#xff08;Virtual Reality&#xff0c;VR&#xff09;系统是一种通过计算机技术模拟出的具有三维视角和交互性的虚拟环境&#xff0c;使用户能够沉浸在其中并与虚拟环境进行交互。这种技术通常利用头戴式显示器和手柄等设备&#xff0c;使用户能够感觉到仿佛身临其境…

Day08-面向对象-继承

文章目录 第7章 面向对象-继承1. 学习目标2. 继承2.1 继承的好处2.2 继承的语法2.3 继承的特点一&#xff1a;成员变量2.3.1 私有化&#xff08;private&#xff09;2.3.2 成员变量不重名2.3.3 成员变量重名 2.4 继承的特点二&#xff1a;成员方法2.4.1 成员方法不重名2.4.2 成…

电子器件系列63:焊带(光伏焊带)

光伏焊带&#xff0c;又称涂锡焊带。光伏焊带是光伏组件的重要组成部分&#xff0c;属于电气连接部件&#xff0c;应用于光伏电池片的串联或并联&#xff0c;发挥导电聚电的重要作用&#xff0c;以提升光伏组件的输出电压和功率。光伏焊带是光伏组件焊接过程中的重要材料&#…

[DP学习] 期望DP

一般思路 注&#xff1a;可以用方差求平方的期望 例题一 思路 重点&#xff1a;如何设状态&#xff0c;如何转移。 设状态 f[i] i 张能买到不同卡片的种类数的期望值&#xff08;直接对问题设置状态&#xff09; 状态转移&#xff1a;由于从f[i1]转移到 f[i] 时&#xff0…

【微服务生态】Elasticsearch

文章目录 一、概述二、下载和部署2.1 单机部署2.2 集群部署2.2.1 环境配置2.2.2 安装及部署 三、基本操作3.1 概述3.2 HTTP 操作3.2.1 索引操作3.2.2 文档操作3.2.3 关系映射3.2.4 高级查询 3.3 Java API 操作 四、Elasticsearch 进阶4.1 核心概念4.2 系统架构4.3 分布式集群4.…

利用nginx内部访问特性实现静态资源授权访问

在nginx中&#xff0c;将静态资源设为internal&#xff1b;然后将前端的静态资源地址改为指向后端&#xff0c;在后端的响应头部中写上静态资源地址。 近期客户对我们项目做安全性测评&#xff0c;暴露出一些安全性问题&#xff0c;其中一个是有些静态页面&#xff08;*.html&…

C 语言基本语法及实用案例分享

一、什么是 C 语言&#xff1f; C语言是一种较早的程序设计语言&#xff0c;诞生于1972年的贝尔实验室。1972 年&#xff0c;Dennis Ritchie 设计了C语言&#xff0c;它继承了B语言的许多思想&#xff0c;并加入了数据类型的概念及其他特性。C语言是一门面向过程的计算机编程语…

OpenCV笔记4:级联分类器实现嘴部检测

OpenCV 嘴部检测 """ 嘴部区域检测 1. 静态图像检测嘴部区域创建分类器加载特征文件检测图像绘制嘴部区域显示 2. 切换为摄像头 """ import cv2 import numpy as npclass FaceDetect:def __init__(self):# 级联分类器# 创建级联分类器&#xf…

js使用import到本js文件中的函数时报错 Error [ERR_MODULE_NOT_FOUND]: Cannot find module

node:internal/process/esm_loader:97internalBinding(errors).triggerUncaughtException(^Error [ERR_MODULE_NOT_FOUND]: Cannot find module D:\桌面\Pagesizedetection\lib\screensize imported from D:\桌面\Pagesizedetection\index.js Did you mean to import ../lib/sc…