C++增删改查+MySQL

右键项目属性

 点击编辑

 选择mysql安装目录的include文件夹

 包含了头文件之后包含库文件

 点击编辑

在mysql安装路径下面选择

 

 选择编辑之后添加

看这个文件下面有没有这个输入的文件依赖

 有就代表成功连接数据库

 创建数据库:

create database student_manager;

使用数据库:

use student_manager

创建表:

create table student(student_id int not null auto_increment primary key,student_name varchar(255) not null,class_id varchar(255) not null);

插入数据:

insert into student values(1000,'张三','软件工程-班');

 详细环境配置:

https://blog.csdn.net/zapachep/article/details/121547648

 

 复制到当前文件下:

 源代码:测试一下连接步骤

#include<mysql.h>
#include<iostream>
#include<string>
using namespace std;
const char* host = "127.0.0.1";
const char* user = "root";
const char* pw = "mxz101305";
const char* database_name = "student_manager";
const int port = 3306;
typedef struct Student {
int student_id;
string student_name;
string class_id;
}Student;
int main() {
//初始化,连接mysql,
MYSQL* con = mysql_init(NULL);
//设置编码,以防止乱码
mysql_options(con, MYSQL_SET_CHARSET_NAME, "GBK");
//连接
if (!mysql_real_connect(con, host, user, pw, database_name, port, NULL, 0)) {
fprintf(stderr, "数据库连接错误:%s\n", mysql_error(con));
return -1;
}
Student stu{ 1111,"吴彦祖", "软件三班" };
char sql[1024];
sprintf_s(sql, "insert into student(student_id,student_name,class_id) values(%d,'%s','%s')", stu.student_id, stu.student_name.c_str(), stu.class_id.c_str());

//失败为1,成功为0
if (mysql_query(con, sql)) {
fprintf(stderr, "操作失败:%s\n", mysql_error(con));
return -1;
}

//关闭连接
mysql_close(con);

return 0;

}

完整的数据库增删改查操作:

头文件

 

#pragma once
#include<mysql.h>
#include<iostream>
#include<string>
#include<vector>
using namespace std;

typedef struct Student {
int student_id;
string student_name;
string class_id;
}Student;
class StudentManager
{
StudentManager();
~StudentManager();
public://单例模式,限制只有一个连接
static StudentManager* GetInstance() {
static StudentManager studentManager;
return &studentManager;
}
public:
bool insert_student(Student& t);
bool update_student(Student& t);
bool delete_student(int student_id);
vector<Student> get_student(string condition = "");
private:
MYSQL* con;
const char* host = "127.0.0.1";
const char* user = "root";
const char* pw = "mxz101305";
const char* database_name = "student_manager";
const int port = 3306;


};

 

 

#include "StudentManager.h"

StudentManager::StudentManager()
{
con = mysql_init(NULL);
//设置编码,以防止乱码
mysql_options(con, MYSQL_SET_CHARSET_NAME, "GBK");
//连接
if (!mysql_real_connect(con, host, user, pw, database_name, port, NULL, 0)) {
fprintf(stderr, "数据库连接错误:%s\n", mysql_error(con));
exit(1);
}
}

StudentManager::~StudentManager()
{
mysql_close(con);
}

bool StudentManager::insert_student(Student& stu)
{


char sql[1024];
sprintf_s(sql, "insert into student(student_id,student_name,class_id) values(%d,'%s','%s')", stu.student_id, stu.student_name.c_str(), stu.class_id.c_str());
if (mysql_query(con, sql)) {
fprintf(stderr, "增加操作失败:%s\n", mysql_error(con));
return false;

}
return true;
}

bool StudentManager::update_student(Student& stu)
{
char sql[1024];
sprintf_s(sql, "UPDATE student SET student_name='%s',class_id='%s'""where student_id=%d",
stu.student_name.c_str(), stu.class_id.c_str(), stu.student_id);
if (mysql_query(con, sql)) {
fprintf(stderr, "更新操作失败:%s\n", mysql_error(con));
return false;

}
return true;

}

bool StudentManager::delete_student(int student_id)
{
char sql[1024];
sprintf_s(sql, "DELETE FROM student where student_id=%d",student_id);
if (mysql_query(con, sql)) {
fprintf(stderr, "删除操作失败:%s\n", mysql_error(con));
return false;

}
return true;

}

vector<Student> StudentManager::get_student(string condition)
{
vector<Student> stuList;
char sql[1024];
sprintf_s(sql, "SELECT * FROM student %s",condition.c_str());
if (mysql_query(con, sql)) {
fprintf(stderr, "查询操作失败:%s\n", mysql_error(con));
return {};

}
MYSQL_RES* res = mysql_store_result(con);
MYSQL_ROW row;
while ((row = mysql_fetch_row(res))) {
Student stu;
stu.student_id = atoi(row[0]);
stu.student_name = row[1];
stu.class_id = row[2];
stuList.push_back(stu);
}
return stuList;
}

验证代码效果:

 

 

#include "StudentManager.h"
int main() {

/*增删改操作
Student stu{ 11114, "海燕12", "数学3班" };
StudentManager::GetInstance()->delete_student(11114);*/

vector<Student> ret = StudentManager::GetInstance()->get_student();
for (auto& t : ret) {
cout << t.student_id << "," << t.student_name << "," << t.class_id << endl;
}
return 0;
}

posted @   满城衣冠  阅读(315)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
点击右上角即可分享
微信分享提示